11 - Yuma aalm Yukarda, CGI programlarnn yapt ileri...

Info iconThis preview shows page 1. Sign up to view the full content.

View Full Document Right Arrow Icon
This is the end of the preview. Sign up to access the rest of the document.

Unformatted text preview: Yuma aalm Yukarda, CGI programlarnn yapt ileri kavramsal olarak belirtirken, bilgi yuman ama iinin Perl programnn asl grevlerinden biri olduunu kaydetmitik. Yazdmz Perl program bunu yaparak, kendisine String halinde gelen (rnein: isim=Mustafa+Durcan&yas=23) bilgiyi kullanlabilir hale getiriyor. String halindeki verinin kullanlr hale getirilmesine Parsing (dilbilgisi bilimindebir cmleyi gramer bakmndan incelemek anlamna gelir) denir. Formdan gelen ve adeta birbirine girmi ve hatta ifrelenmi olan deerlerin almas, eittir (=) iaretinin solundaki kelime, rakam veya iaretin deiken ad, sandakilerin deikenin deeri haline getirilmesi gerekir. Bu arada art (+) iaretinin yerine boluk konmas, nnde yzde iareti bulunan iki karakterin URL Encoding emasna gre harfe veya iarete evrilmesi arttr. Aksi taktirde deerlerimizi kullanamayz. (Sizin adnz Hakk%FD+%D6caldr diye bir karlk verdiimizi dnebiliyor musunuz?) Fakat biz Web amal CGI programclar bu bakmdan anslyz; nk cidd programclk amacyla Perl renmi Steven K. Brenner gibi uzmanlar, oturmu bir CGI programna GET veya POST yntemiyle gelebilecek verileri inceleyip, deiken=deer iftlerini ortaya tkartan ve bunu Perle dizi deiken olarak reten program paracklar yazmlar. Bizim btn yapacamz, Perl Kitapl (Library) ad verilen bu program paracklarn kendi Perl programmzda kullanlr hale getirmektir. Byle, dardaki bir Perl programn kendi programmzn iinde kullanmak istersek, kendi programmzn banda Perl yorumlaycsna (rnein perl.exe) bizim program icra etmeye balamadan nce dardaki bu kitapl alp, altrmasn bildirmemiz gerekir. Buradaki rneimizde bunu, require 'cgi-lib.pl' satr ile yapyoruz. Bu satrdaki require komutu, bizim bilgisayarmzdaki perl.exeye veya Servern bulunduu bilgisayardaki Perl yorumlaycsna ie balamadan nce cgi-lib.pl adndaki Perl programn altrmasn bildiriyor. cgi-lib.pl programn Steven K. Brenner 1995te yazarak Prel programclarna armaan etmi bulunuyor. (Bu program, bu kitapn rnek dosyalar arasnda bulabilirsiniz.) cgi-lib.pl programnda bir ka fonskiyon tanmlanm bulunuyor. Perln defalarca yapmas gereken ileri, bu iin yaplmas iin gerekli bilgi kmesi ve komutlarla birlikte bir grup haline getirir ve bu gruba bir isim verirsek ortaya bir fonksiyon kartm oluruz. Szgelimi, Perle Filanca yerdeki u Stringi al; iindeki filanca iareti bul; eer bu iaret una eitse, nndeki grubu dizi deiken ad yap... diye bir dizi komut verebilirdik. Fakat bu hem yorucu olurdu; hem de hata yapma olaslmz arttrmaya yarard. Oysa, cgi-lib.pl programnda Parsing ilemi iin gelitirilmi fonksiyonlar var. Biz bu fonksiyonlarn yapt i kmesine ihtiya duyduumuz yerde kendi yazdmz Perl programna Stevenn programndaki filanca fonksilonu al, ne emrediyorsa yap, sonucu da gel bana bildir! dersek, ilerimiz daha kolay hale gelmi olur. te bu tr, bir isim altnda toplanm ilem paketlerine Function (ilev) ad verilir; Perl dier btn programlar gibi kendisine u fonksiyonu yap! dediiniz noktada yapmakta olduu ii durdurur ve fonksiyon paketindeki ileri yapar; bu paket ortaya bir deiken veya sonu kartyorsa, o bilgiyi edinmi olarak yarm brakt ileme geri dner. Fonksiyon yazmamzdaki veya hazr fonksiyonlar kullanmamzdaki birinci sebep, Perle, Fonksiyonun salayaca bilgiyi kazandrmaktr. Perln yukardaki rneklerde kullandmz baz komutlar, rnein print komutu aslnda Fonksiyon diye adlandrlr; eer biz bir fonksiyon yazyorsak, buna subrutin (subroutine) denir. Daha sonra subrutin yazmay greceiz; imdi sadece Stevenn (veya kendi Perlmze eklediimiz herhangi bir haric kitaplk dosyalarndaki) subrutinlerine nasl atf yaptmza dikkat edelim. cgi-lib.pl programnda tanmlanm olan ReadParse subrutini, GET veya POST yoluyla alnm veriyi okur ve bunlartrn ve niteliini daha sonra greceimizdizi deikenlerin (array) iine yazar. Perl iine iyice sndmza gre, bu dilin kendi argosunu renebilmek iin belirtelim: Perlde buradaki gibi dardan aldmz deiken=deer iftlerine anahtar/deer denir; deiken ad Perln kendi iinde oluturduu veri tutma alanlar iin kullanlr. Perl programclk evrelerinde bir ok kitaplk-program bulabilirsiniz; cgi-lib.plnin en ok kullanlan kitaplk olmasnn sebebi, anahtar/deer dizisinin yazlaca deikenin adn bizim verebilmemizdir. cgi-lib.plin GET veya POST verisini okuyan ve irderelen subrutininin ad ReadParsedr; dolaysyla bu subrutine biz &ReadParse eklinde gndermede bulunuruz. Bu gnderme &ReadParse(*girdi); eklinde yaplr. Bu komutla, cgi-lib.pl programna Benim GET veya POST verilerimi okuyur, anahtar/deer iftlerini bul; bunlar girdi isimli dizi deikenin iine yaz! demi oluyoruz. Formun bulunduu HTML sayfasn tasarlayan biz olduumuza gre, Input etiketlerimizin adlarn (yani CGIda anahtar/deer iftinde anahtar olacak kelimeleri biliyoruz. (Buradaki rnekte, isim ve yas.) Eer isim adl anahtarn deerini bilmek istiyorsam, btn yapacam ey, girdi dizi-deikeninin isim ve yas adl anahtarlarnn deerlerini sorgulamaktan ibaret. Bunu $girdi{'isim'} ve $girdi{'yas'} ifadeleriyle yapyoruz. Fakat henz Perln yap talar olan deikenleri tanmadmz iin, bunun zerinde durmuyoruz. O da ilerde! ...
View Full Document

Ask a homework question - tutors are online