36 - Metinleri birbirine Nokta ile ekleyebiliriz Perln...

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: Metinleri birbirine Nokta ile ekleyebiliriz Perln metin dzenleme fonksiyonlarna ayrntl olarak bakacaz; burada sadece .= ilemi zerinde ksaca duralm. Saylar toplarz; Stringleri ekleriz. Perl, mkemmel bir rapor yazma dili olarak icad edildii iin olacak, bir ok metin dzenleme aracna ek olarak, zel bir metin ekleme operatrne sahiptir: Nokta. Bunu bir rnekle anlatmak daha kolay: $metin1 = kara; $metin2 = deniz; print $metin1 . $metin2; bize, tahmin ettiiniz gibi unu verir: karadeniz Belki ekrana dorudan karadeniz yazdrmann daha kolay yollar bulunabilir; ama nokta ile metin ekleme ilevinden zellikle mevcut bir deikenin sonuna yeni ek yaptrmakta yararlanabiliriz. Diyelim ki, yle bir liste yapyoruz: $arkadaslar = Mustafa, Osman, Vildan, Kudret Fakat programn daha ileri bir aamasnda $yeni_arkadaslar deikenine yeni isimler eklediniz. imdi bu iki listeyi birletirmeniz gerekiyor. Deikenin tmn yazmak yerine, Perle, Bu deikeni al, iindekileri u deikenin iindeki Stringin sonuna ekle! demek daha kolay olabilir: $arkadaslar = $arkadaslar . $yeni_arkadaslar; Eer bu da size ok zahmetli grnyorsa, Perln u kolaylndan yararlanabilirsiniz: $arkadaslar .= $yeni_arkadaslar; $anahtar ve $deger deikenlerimizin iinde dngnn her admnda sadece birer String var ve ikinci adma gemeden nce bu Stringleri temelli bir yere yazmak zorundayz; ki ikinci admda @girdilerin bir sonraki deerini alalm. ki Stringi yanyana alabiler ve birincisini ikincisinin endeksi (Perl diliyle anahtar), ikincisini de birincisinin deeri yapabileceimiz deiken tr likili Dizi (Hash, associative Array) listesidir. imdi eer foreach dngsnn birinci admnda elimizdeki iki deikeni bir likili Diziye atarsak, dngnn ikinci admnda $anahtar ve $deer deikenlerine @girdilerden yeni Stringler alabiliriz. likili Dizi oluturmann eitli yollarn ele almtk; bunlardan biri uydu: $iliski_dizi_degisken_ismi{$anahtar_ismi_olacak_deger} = $deger_olacak_deger Bunu bir rnekle yazalm: $formveri{$anahtar} = $deger; Buradaki ssl parantezi grnce Perl, bir likili Dizi oluturmak istediimizi ve onun bir anahtar olarak $anahtar adl deikenin deerini, bu anahtarn kart olan deer olarak da $deger deikenin deerini atamak istediimizi anlar; %formveri adndaki likili Dizi deikeni oluturur, birinci kaydn anahtar olarak $anahtar deikeninin o sradaki deerini, deeri olarak da $deger deikeninin o andaki deerini atar. foreach dngsnn birinci admnda $anahtarn deeri adi, $degerin deeri ise iinden art iaretini atp yerine boluk koyduumuz Mustafa Durcan idi. kinci admda, %formverinin ikinci kaydnn anahtar Adres, deeri ise Web Teknikleri.. olacak ve bu foreachin sonuna kadar devam edecek. foreach ise @girdilerin son elemannn ilenmesi ile sona erecek. Dikkat etmi olacanz gibi %formverinin kaytlarn da if ile bir mantk szgecinden geiriyoruz. Formlarmzda, bazen ayn alan adna sahip olabilen INPUT etiketleri bulanabilir. Bu etiketler dolaysyla Formdan CGIya gelen veri yumanda daha sonra likili Dizime anahtar olarak yazlmak zere ayn kelimeden birden fazla bulunabilir. Bunu kabul edemeyiz, nk likili Dizilerde anahtarlarn zgn, yani bir adet olmas gerekir. foreach dngsnn sonundaki bu if deyimi, o anda elimizdeki anahtarn daha nce diziye yazlp yazlmadn snamaktadr. %formveride bu adla daha nce yazlm anahtar varsa, o anda $deerin tuttuu String, daha nce yazlm anahtarn kart olan deerin sonuna, virgl ile eklenecektir ($formveri{$anahtar} .= ", $deger";); eer henz bu anahtar diziye yazlmamsa, kendisi zgn bir kaydn anahtar, o andaki $deger de deeri olacaktr ($formveri{$anahtar} = $deger;). form_analiz.plin geri kalan blm, %formveri dizisinin anahtar/deer iftlerini ekrana yazdrmaktan ibaret. Buraya kadar aslnda byk i baardk diyebiliriz. Bir ok kiinin belki de CGI ve Perl ihtiyacnn balca kayna olan Form bilgisini alp, ilemeyi ve bunu ekrana dkmeyi baardk: imdi ekrandaki bu dkm ileminin biraz daha dzenli olmasn salayalm ve bu veriyi ekrana deil de HTTP Servern bulunduu bilgisayarda sabit diske yazdralm. ...
View Full Document

This note was uploaded on 02/23/2012 for the course CS CS281 taught by Professor Özgürulusoy during the Winter '12 term at Bilkent University.

Ask a homework question - tutors are online