|
Bölüm 2: Perl Değişkenleri
Scalar Değişkenler
Scalar değişkenlere tek bir değer atanır. Bu değer bir sayı, bir cümle ya da başka bir scalar değişken olabilir. Scalar değişkenlerin adlarının başında $ işareti bulunur. Örneğin $x, $y, $z, $adres, $kullanici birer scalar değişken adıdır. Scalar değişkenlere değer atama işlemi de aşağıdaki örneklerde görüldüğü gibi yapılır.
Değişkenleri kullanmadan önce tanımlamanıza gerek yoktur. Ayrıca Perl değişkenleri program içinde tip de değiştirebilir. İşte bir örnek:
Bazı programlama dillerinin tersine Perl bu durumu kabul eder ve bir hata mesajı vermez.
Şimdi ilkscript.pl isimli scripti biraz değiştirelim ve birkaç değişken ekleyelim:
Scripti kaydedin ve UNIX'te çalıştırın. Program size isminizi soracak ve birşeyler yazıp enter'a basmanızı bekleyecektir. Bu işlem
satırı dolayısıyla gerçekleşir. Yazdığınız yazı $siz değişkenine atanır. Yazdığınız yazının sonundaki enter tuşunu simgeleyen "Carriage Return" karakteri aşağıdaki komut satırı ile silinir.
Aşağıdaki satır işletildiğinde değişkenlerin yerine atandığı değerler ekranınızda görünür. En sondaki \n Per'de "Carriage Return" işaretini temsil eder. Yani programa, yazıyı yazdıktan sonra enter'a basmasını söyler.
Array Değişkenler
Array'ın Türkçe karşılığı "Dizi"dir. Array değişkenler için değerler listesi diyebiliriz. Scalar değişkenler tek bir değer içermesine karşın array değişkenler birden fazla değer içerirler. Array değişken adlarının başında at işareti (@) bulunur. İşte bir örnek:
Bir dizinin tüm elemanları şu şekilde yazdırılabilir:
# bu bir açıklamadır.
@renkler = ("sari","kirmizi","yesil");
print "$renkler[0]\n";
Fakat elbette ki bunu yapmanın daha kolay bir yolu var. foreach yapısı kullanılarak dizileri rahatlıkla yazdırabiliriz.
# bu bir açıklamadır.
@renkler = ("sari","kirmizi","yesil");
foreach $i (@renkler) {
foreach döngüsünün her tekrarlanışında $i değişkenine @renkler dizisinin bir elemanı atanır. İlk tekrarda $i değişkeninin değeri "sari", ikinci tekrarda "kirmizi" ve üçüncü tekrarda "yesil" olur. { ve } parantezleri döngünün başlangıç ve sonunu belirtir. Yani bu parantezler arasında kalan komutlar $i değişkeninin bütün değerleri için tekrarlanır.
$ilkrenk = pop(@renkler);
$sonrenk = shift(@renkler);
Bir diziye değer eklemek için push fonksiyonu kullanılır:
@yenirenkler = ("lacivert","pembe");
push(@renkler,@yenirenkler);
Dizilerle ilgili işe yarayabilecek birkaç fonksiyon daha:
reverse(@renkler);
@join(", ",@renkler);
$uzunluk = $#renkler;
Hash Değişkenler
Hash değişkenleri Array değişkenlerin özel bir hali olarak düşünebiliriz. Hash değişken adlarının başında yüzde işareti (%) bulunur. Hash değişkenler öğe çiftlerinden oluşur: Anahtar ve Değer. Aşağıdaki örneği inceledikten sonra daha rahat anlayacağınızı tahmin ediyorum:
Aynı Hash şu şekilde de tanımlanabilir:
%sayfalar değişkeninde anahtar olarak kişinin ismini, değer olarak da web sayfasının adresi saklanır. Tıpkı Array'de olduğu gibi, bir Hash değişkenden tek bir değer okunacağı zaman $ işareti kullanılır.
Yukarıdaki satır Barış'ın web sayfasının adresini yazdırır. Eğer değişkendeki bütün değerleri yazdırmak istiyorsanız bir foreach döngüsü kullanabilirsiniz:
Bu örnekte %sayfalar değişkeninin anahtarlarını öğrenebilmek için bir hash değişkeninin anahtarlarını dizi olarak veren keys fonksiyonu kullanılmıştır. keys fonksiyonunun tek bir dezavantajı vardır: Anahtarları rastgele bir sırayla vermesi. Yani bu örnekte kimin adresinin önce, kiminkinin sonra ekrana yazılacağı belli değildir. Adresleri belli bir sırayla yazdırmak istiyorsanız aşağıda gösterildiği gibi foreach döngüsünde anahtarları kendiniz yazmalısınız.
Hash değişkenler formla gönderilen verileri ayırmada çok işimize yarayacak. Örneğin $form{'soyad'} bize formunuzdaki soyad kutucuğuna yazılan değeri verecek. Televizyoncuların deyimiyle: "AZ SONRA!" :)
Neyse, biz yine işimize bakalım ve adres listesi veren bir web sayfası üreten yeni bir CGI scripti yazalım. Tabi ki Hash değişken kullanarak.
Yukarıdaki scripti "adreslistesi.cgi" adıyla kaydedin ve çalıştırılabilmesi için erişim yetkilerini 755 olacak şekilde değiştirin. Sonra da web browser'ınızdan çağırın. Açılan sayfada isme tıkladığınız zaman o kişinin web sayfasının açıldığını göreceksiniz.
|
|||||||||||||||||||||||