Antalya Tasarım Grubu - Web Sitesi Tasarım    ATG - Genel Bilgi Sayfaları Geri Ileri
CGI hakkında ön bilgi
CGI nedir, ne işe yarar?
Kişisel web server kurulumu
Programların çalışabilmesi için gerekli kodlar
Ekrana yazdırma ve ilk program
Perl diline giriþ
Değişkenler
Splice ve split fonksiyonlarý
Formları kullanma
Çevre değişkenleri
Döngüler
Mantıksal sınama
Matematiksel işlemler
Dosya işlemleri
Alt programlar
Bulma ve değiştirme
Web üzerinden mail gönderme
Perl ile dizin işlemleri
Cookie'ler
Modüller, modül kullanımı ve require
Yazılma sonrası işlemleri
Güvenlik
Upload
Lisans konularý
Programların lisansı ve copyrigth haklarý
Linkler
Perl ile ilgili Türkce ve yabancı linkler
Bu döküman hakkında
Bu döküman hakkında
Antalya Tasarım Grubu - Web Tasarim Hizmetleri - Hosting (Barindirma) Islemleri - Alan Adi Islemlerii

Perl Dilinde Döngüler :

Her programlama dili gibi Perl de döngülerle çalışır. Gelişmiş CGI programları onlarca döngüden (loop) oluşur. Döngü bir şart gerçekleşene kadar aynı işlemin tekrar etmesi demektir. Bu şart veri dosyasının sonuçlanması ya da bir dizi değişkenin içindeki tüm elemanların teker teker sayılması olabileceği gibi her döngüde bir arttırılan değişkenin belli bir rakama gelmesi yani döngünün belli sayıda dönmesi de olabilir. Her programlama dilinde olduğu gibi Perl'de de döngüleri öğrenmek ve kullanmak zordur. O yüzden bol bol pratik yapmalı, kod yazmalı ve döngüleri farklı şartlar altında kullanmalısınız ama önce tanışmanız gereken bir kavram var:

Sonsuz Döngü :

Sonsuz döngü, döngünün sonuçlanması için gereken şartın meydana gelmemesi yani döngünün sonsuz defa dönmeye başlamasıdır. Programcıların en çok yaptığı hatalardan biridir. Eğer içinde döngü geçen bir programı çalıştırmaya çalıştığınızda sayfa çok yavaş yükleniyorsa, işlemciden aşırı şekilde ses geliyorsa ve mouse'da takılma oluyorsa sonsuz döngüye girdiniz demektir, ctrl+alt+del e basıp çıkan pencerede Perl'ü seçin ve "Görevi sonlandır" butonuna basın. Browser'ı kapatsanız bile döngü devam edebilir. Eğer bir dosyaya döngü ile birşeyler yazdırıyorsanız ve program sonsuz döngüye girmişse harddisk'iniz birkaç dakikada (belki de daha az bir sürede) tamamen dolabilir. Bu yüzden döngüleri kullanırken çok dikkatli olmalısınız.

Foreach Döngüsü :

Foreach döngüsü bir dizi değişken ya da eldeki belli bir veri sonuçlanıncaya kadar döngü yapar.

Örnek :

#!/usr/bin/perl

# dongu1.cgi

print "Content-type:text/html\n\n";

print "<html><body>";

@dizi = ("ahmet", "mehmet", "suleyman", "murtaza", "salih", "ayşe", "hakan", "özlem");


foreach $dongu (@dizi) {

        print "Döngünün şimdiki üyesi : $dongu <br>";

        }


print "</body></html>";



Burada kısaca yaptığımız şu: önce "dizi" isminde bir dizi değişken oluşturduk, daha sonra "dizi" isimli dizi değişken için "foreach" döngüsü başlattık. Bu döngü dizi değişkenin içindeki elemanlar sonuçlanıncaya kadar devam eder ve $dongu isimli değişken için döngü içinde yapılan işlemler dizi değişkenin içindeki tüm elemanlar için döngü süresince uygulanır. Biz örneğimizde dizi değişken içindeki tüm elemanları sırayla ekrana yazdırdık. Döngüdeki sıralamaya dikkat edin.

Foreach döngüsü genel olarak dosya okutup dosya içeriğini dizi değişkene atadıktan sonra bu dosya elemanlarını teker teker ekrana yazdırmakta kullanılsa da farklı şekilde de kullanılabilir. Farklı kullanıma bir örnek :

#!/usr/bin/perl

# dongu2.cgi

print "Content-type:text/html\n\n";

print "<html><body>";

foreach $dongu (1..20) {

        print "Döngünün şimdiki üyesi : $dongu <br>";

        }



print "</body></html>";



Bu örnekte de 1 ile 20 arasında döngü oluşturduk ve bu aralıktaki her rakam için teker teker bir işlem (ekrana yazdırma) yaptık.

While Döngüsü :

While döngüsü de hemen hemen aynı mantıkla çalışır. Döngü oluşur ve döngü bitimine kadar döngü içinde yazan eylemler teker teker tekrar eder fakat Foreach'dan farkı bu şartı kendimiz belirlememizdir. Aşağıdaki örnekte biraz html ile Perl'ü karıştırıp önce sayaç isimli bir tekil değişken oluşturup değerini "1" yapıyoruz ve sayaç değeri 5 olana kadar döngüyü tekrar ediyoruz. Döngü her tekrar edişinde $sayac tekil değişkeninin değerini bir arttırıyoruz. Eğer $sayac değişkeni tanımlanmasaydı ya da her döngüde bir arttırılmasaydı sonsuz döngüye düşerdik...

#!/usr/bin/perl

# dongu3.cgi

print "Content-type:text/html\n\n";

print "<html><body>";

$sayac = 1;

while ($sayac <= 5)  {

print "<h$sayac>Sayaç değeri: $sayac</h$sayac>";

$sayac++;

}

print "</body></html>";






For Döngüsü :

For döngüsü de While döngüsüyle hemen hemen aynı işlevi görür fakat argümanlar biraz değişiktir. Yukarıda While ile yaptığımız örneği For döngüsü ile yapalım :


#!/usr/bin/perl

# dongu3.cgi

print "Content-type:text/html\n\n";

print "<html><body>";

for ($sayac = 1; $sayac <= 5; $sayac+=1)  {

print "<h$sayac>Sayaç değeri: $sayac</h$sayac>";

}

print "</body></html>";



Bu kodlar yukarıda verdiğimiz While döngüsü örneğiyle aynı işlevi görür.

t