Perl sunucu tarafında çalışan bir dildir dedik. Perl vasıtası ile sunucu tarafında yani web alanında dosya açabilir, açtığımız dosyaya kayıt yapabilir -ya da ekleme yapabilir- , dosyadan belli bir kaydı silebilir ya da dosyayı silebiliriz. Perl'in bize sağladığı bu olanağı kullanarak açtığımız herhangi bir dosyayı veritabanı olarak kullanabiliriz. Perl ile server'da varolan ya da varolmayan bir dosyayı open() fonksiyonu kullanarak açarız. open() fonksiyonu ile dosyayı açtıktan sonra dosyayı bir "file handle" olarak tanımlar ve dosya üzerinde işlem yapıp dosyayı kapatana kadar da bu "file handle" ı kullanırız.


Yeni dosya oluşturma ve kayıt yapma :


Dosyayı açtıktan sonra formdan gelen ya da herhangi bir şekilde elde ettiğimiz veriyi istediğimiz formatta dosyaya print "..."; şeklinde yazdırabiliriz. Bunun için eğer dosyaya yazarken eski bilgilerin üzerine yazılmasını, eski bilgilerin silinmesini istiyorsanız open fonksiyonu şu şekilde kullanılmalıdır:


open (HANDLE, ">dosya.dat");


HANDLE yazan yer "file handle" dediğimiz, daha sonra dosya üzerinde işlem yaparken kullanacağımız takma isimdir. Dosyalara isim verirken Türkce karakter kullanılmaz, küçük harf kullanmanın bir sakıncası olmamasına karşın genelde büyük harf kullanılır. Dediğim gibi dosyaya yazarken eski bilgilerin silinmesini istiyorsanız dosyayı açarken dosyadan önce bir tane büyüktür (>) işareti kullanmanız gereklidir. Eğer kayıt yaparken eski dosyadaki bilgileri muhafaza etmek istiyorsanız dosya adından önce iki tane büyüktür (>>) işareti kullanmanız gerekir.


open (HANDLE, ">>dosya.dat");


Bu şekilde dosyaya yazdırdığınız bilgiler eski bilgilerin üzerine değil, bir alt satırına kaydedilir.


Örnek :


#!/usr/bin/perl# dosya1.cgiuse CGI qw(:standard);print "Content-type:text/html\n\n";$query = new CGI;$isim = $query -> param('isim');$soyad = $query -> param('soyad');if ($isim eq "" or $soyad eq "") {print "<html><body>";print "<br>";print "<form action=dosya1.cgi method=post>";print "Lütfen isminizi yazın: <input type=text name=isim><br>";print "Lütfen soyadınızı yazın: <input type=text name=soyad><br>";print "<input type=submit value=Yolla!></form></body></html>";exit;}open (DOSYA, ">>veri.txt");print DOSYA "$isim|$soyad\n";close (DOSYA);print "Verdiğiniz bilgiler başarıyla <a href=veri.txt>veritabanına</a> kaydedildi.";






Örnekte isim ve soyad isteyen, verildiğinde bu isim ve soyadı "|" karakteri ile ayırıp dosyaya kaydeden bir program yaptık. Program her "Yolla" butonuna bastığınızda gönderdiğiniz isim ve soyadı programla aynı klasördeki "veri.txt" dosyasına kaydedecek, eğer böyle bir dosya yoksa oluşturup öyle kaydedecektir. Daha sonra bu veritabanını "|" karakterinden bölerek ekrana yazdırabiliriz. Eğer dosyayı açarken iki büyüktür (>>) yerine sadece bir tane kullansaydık program her seferinde veri tabanına sadece bir tane kayıt yapardı.


Dosya açıp dosya içeriğini ekrana yazdırma :


Daha önce kayıt yapılmış bir dosya içeriğinin ekrana yazdırılması için şu işlemler yapılır: önce open() fonksiyonu kullanılarak dosya açılır, dosya içeriği bir değişkene (tek satırsa tekil, birden fazla satırsa dizi) atanır, daha sonra close () fonksiyonu ile açılan dosya kapatılır, bu dizi değişken direk print "@dizi"; şeklinde ya da bir döngü kullanılarak ekrana yazdırılır. Dosya açılırken dosya adından önce hiç işaret kullanılmaz ya da bir tane küçüktür (<) işareti kullanılır. Dizi değişken ekrana yazdırılırken veri dosyası içeriğine göre belli yerlerden (örneğimizde "|" karakterinden) split () fonksiyonu yardımıyla bölüm değişkene atanabilir.


Örnek :


#!/usr/bin/perl# dosya2.cgiprint "Content-type:text/html\n\n";open (DOSYA, "veri.txt");@veriler = <DOSYA>;close (DOSYA);print "<b>Veritabanı içeriği</b><br><br>";print "<b>İsim - Soyad</b><br>";foreach $dongu (@veriler) {($isim, $soyad) = split (/\|/, $dongu);print "$isim - $soyad<br>";}


Örnekte bir öneki örnekte oluşturduğumuz veritabanı dosyasını açtık, @veriler dizi değişkenine atadık, dizi değişken için foreach döngüsü oluşturduk, döngü boyunca satırları split () fonksiyonu ile "|" karakterinden bölüp $isim ve $soyad adlı değişkenlere atadık ve bu değişkenleri teker teker ekrana yazdırdık