CGI-PERL
Webserver Kurulumu
Çalışması
için Gerekli Kodlar
Perl ile Yazı Yazdırma
Perl'de Değişkenler
İlişkili Dizi (hash)
değişkenler
Formları Kullanma
Çevre Değişkenleri
Perl'de Mantıksal Sınama
|
CGI/Perl Dersleri Perl'de Mantıksal Sınama
Perl'de
Mantıksal Sınama :
Perl ile formdan gelen ya da bir şekilde elde ettiğimiz veriyi mantıksal
sınamaya tabi tutabilir ve programı buna göre yönlendirebiliriz. Perl'de
mantıksal sınamalar şu şekildedir:
Sayısal değerlerde mantıksal sınama :
İşlem Anlamı
x > y x büyüktür y'den
x < y x küçüktür y'den
x >= y x büyük eşittir y'ye
x <= y x küçük eşittir y'ye
x == y x eşittir y'ye
x != y x eşit değildir y'ye
Sayısal olmayan değerlerde mantıksal sınama:
İşlem Anlamı
a eq b a eşittir b'ye
a ne b a eşit değildir b'ye
a lt b a küçüktür b'den
a gt b a büyüktür b'den
a le b a küçük eşittir b'ye
a ge b a büyük eşittir b'ye
Buna göre perl'ile bir veri ya da değişken üzerinde mantıksal sınama
yapmak için bu verinin ya da değişkenin içeriğinin sayısal olup
olmadığını bilmemiz gerekiyor.
Mantıksal sınama if, elsif, else fonksiyonları :
Yukarıda sayısal değerlerde ve sayısal olmayan değerlerde (string)
karşılaştırma operatörlerini gördünüz ama ne işe yaradıklarını
bilmiyorsunuz. Bu operatörler perl'de karşılaştırma yapmaya olanak verir
ve bunu da if(), elsif() ve else() komutlarıyla sağlarız. Kullanımı şu
şekildedir:
if (koşul) {
koşul sonunda yapılacak işlem
}
elsif(koşul) {
koşul sonunda yapılacak işlem
}
else {
bu iki (ya da daha fazla) koşulun gerçekleşmemesi durumunda yapılacak
işlem
}
Buna göre iki rakamı form vasıtasıyla programa gönderelim, program bize
bu iki rakamı karşılaştırıp sonucunu ekrana yazsın :
#!/usr/bin/perl
# if1.cgi
use CGI qw(:standard);
print "Content-type:text/html\n\n";
$query = new CGI;
$ilksayi = $query -> param('ilksayi');
$sonsayi = $query -> param('sonsayi');
print "<html><body>";
if ($ilksayi ne "" or $sonsayi ne "") {
if ($ilksayi == $sonsayi) {
print "ilksayı($ilksayi) ile ikinci sayı($sonsayi) eşit!";
}
elsif ($ilksayi != $sonsayi) {
print "ilksayı ($ilksayi) ile ikinci sayı($sonsayi) eşit değil!";
}
}
print "<br>";
print "<form action=if1.cgi method=post>";
print "Birinci sayı: <input type=text name=ilksayi><br>";
print "İkinci sayı: <input type=text name=sonsayi>";
print "<input type=submit value=Karşılaştır>";
print "</body></html>";
İlk "if" karşılaştırması dikkatinizi çekti mi? Bu ilk karşılaştırma
sayesinde eğer formdan veri gelmemişse sadece form görünüyor, formdan
veri gelmişse karşılaştırma yapılıyor ve altında yine form gösteriliyor
böylece programın saçmalamasını önlüyoruz.
Aynı şeyi bir de sayısal olmayan değerlerle, yani harflerle yapalım.
Mesela formdan gönderilen veriler bizim ismimize eşitse ekrana "Senin
isminle benim ismim aynı, biz adaşız" yazdıralım, değilse "isimlerimiz
aynı değil, biz adaş değiliz" yazdıralım :
#!/usr/bin/perl
# if2.cgi
$benim_ismim = "hakan";
use CGI qw(:standard);
print "Content-type:text/html\n\n";
$query = new CGI;
$isim = $query -> param('isim');
print "<html><body>";
if ($isim ne "") {
if ($isim eq $benim_ismim) {
print "Bizim isimlerimiz aynı, biz adaşız!";
}
elsif ($isim ne $benim_ismim) {
print "İsimlerimiz aynı değil, biz adaş değiliz";
}
}
Yukarıdaki örnekte $benim_ismim değişkenini kendi adınızla ya da başka
adlarla değiştirerek sınama yapabilirsiniz.
CGI/Perl Dersleri Matematiksel İşlemler
Perl'de matematiksel işlemler :
Matematik ile aranız nasıl bilmiyorum ama gerçek CGI programları yazmaya
başladığınızda programlarınızın içinde mutlaka matematiksel işlemler
yapmak zorunda kalacaksınız. Bu işlemler çok karmaşık işlemler
olabileceği gibi değişkenleri toplama, çıkarma, döngü sırasında bir değer
arttırma şeklinde de olabilir. Bu derste perl ile yapabileceğimiz
matematiksel işlemleri ele alacağız.
Perl ile dört işlem :
Perl ile sayıları ya da sayı içerikli değişkenleri toplayabilir,
çıkarabilir, bölebilir ya da çarpabiliriz. Örneğin elimizde şu
değişkenler var :
$a = 1;
$b = 2;
$c = 3;
$d = 4;
Önce $a ile $b'yi toplayalım :
$sonuc = $a + $b;
print $sonuc;
Bu kod ekrana $sonuc değişkenin değerini yani "3" yazdıracaktır. $b
değişkeninden $a değişkenini çıkarmak için ise şöyle bir kod yazmamız
gerekir :
$sonuc = $b - $a;
print $sonuc;
Bu kod da ekrana "1" yazdıracaktır. Çarpma işlemi ise şu şekilde :
$sonuc = $b * $d;
print $sonuc;
Bu kod da $b değişkeni ile $d değişkenlerinin değerlerini çarpıp sonucu
$sonuc değişkenine atar ve ekrana "8" yazdırır. Bölme işlemi ise şu
şekilde :
$sonuc = $d / $b;
print $sonuc;
Bu kod da $d değişkeninin değerini $b değişkeninin değerine böler (4 /
2), sonucu $sonuc değişkenine atar ve ekrana yazdırır. Eğer birden fazla
işlem yapmak istiyorsak, mesela önce $a, $b, ve $c değişkenlerini
toplayıp sonuçtan $d değişkenini çıkarmak istiyorsak şu şekilde bir kod
kullanmamız gerekir :
$sonuc = ($a + $b + $c) - $d;
print $sonuc;
Bu kodla program önce $a, $b ve $c değişkenlerinin değerlerini toplar,
sonra çıkan sonuçtan $d değişkeninin değerini çıkarır ve sonucu (6-4 = 2)
ekrana yazar.
Dört işlem için bu kadar örnek fazla bile. Şimdi öğrendiğimiz bilgilerden
daha "işe yarar" bir örnek yapalım. Örneğimiz formdan gelen iki sayı
üzerinde işlem yapsın. Bu işlem yine ziyaretcinin (yani bizim) seçtiğimiz
işlem olsun. Yani kısaca dört işlem yapabilen basit bir hesap makinası
yapalım :
#!/usr/bin/perl
# hesapla.cgi
use CGI qw(:standard);
print "Content-type:text/html\n\n";
$query = new CGI;
$sayi1 = $query -> param('sayi1');
$sayi2 = $query -> param('sayi2');
$islem = $query -> param('islem');
print "<html><body>";
if ($islem ne "") {
if ($islem eq "topla") {
$sonuc = $sayi1 + $sayi2;
print "İşlem sonucu : $sonuc";
}
elsif ($islem eq "cikar") {
$sonuc = $sayi1 - $sayi2;
print "İşlem Sonucu : $sonuc";
}
elsif ($islem eq "bol") {
$sonuc = $sayi1 / $sayi2;
print "İşlem Sonucu : $sonuc";
}
elsif ($islem eq "carp") {
$sonuc = $sayi1 * $sayi2;
print "İşlem Sonucu : $sonuc";
}
}
print "<form action=hesapla.cgi method=post>";
print "<input type=text name=sayi1> sayısı ile ";
print "<input type=text name=sayi2> sayısını ";
print "<select name=islem>";
print "<option value=topla>Topla<br>";
print "<option value=cikar>Çıkar<br>";
print "<option value=bol>Böl<br>";
print "<option value=carp>Çarp<br>";
print "</select>";
print "<input type=submit value=YAP!>";
print "</form>";
print "</body></html>";
Perl ile ileri matematik işlemleri de yapabilirsiniz. Mesela :
$sayi = 12;
$karekok = sqrt($sayi);
print $karekok;
Bu kod sqrt() fonksiyonu ile $sayi değişkeninin değerini $karekok
değişkeninin değerine atar ve ekrana 12'nin karekökünü yazdırır.
$sayi = 12;
$log = log($sayi);
print $log;
Bu kod log() fonksiyonunu kullanarak $sayi değişkeninin logaritmasını
alır, $log değişkenine atar ve ekrana yazdırır. Aynı şekilde exp()
fonksiyonu ile sayının exponensiyelini, int() fonksiyonu ile sayının
integerini, abs() fonksiyonu ile sayının mutlak değerini bulabilirsiniz.Bu
konu Seçkin Yastıkçılar tarafından yazılmıştır, alıntıdır. |