Cgi-Perl: Bir dosyanın içerisinde belli bir metni arama
Perl-CgiCgi-Perl: Bir dosyanın içerisinde belli bir metni arama Programlama Dilleri hakkında bilgi paylaş; Bir dosyanın içerisinde belli bir metni arama
Bu bölümde bir dosyanın içerisinde belli bir ...
Cgi-Perl: Bir dosyanın içerisinde belli bir metni arama
Bir dosyanın içerisinde belli bir metni arama
Bu bölümde bir dosyanın içerisinde belli bir metni nasıl aratabileceğimizi anlatacağım. Eğer bütün sitede arama yaptırmak istiyorsanız bunu kendiniz yapmanızı tavsiye etmem. Bunun için ve gibi hazır site indexleme araçlarını kullanabilirsiniz. (SWISH'i tavsiye ederim)
Dosyada arama yaptırmanın değişik yolları vardır. Eğer bir tek dosyada arama yaptıracaksanız, bir döngü ile dosyadaki bütün kayıtları teker teker okutup aradığınız verinin o kayıtta geçip geçmediğini kontrol edebilir, ya da Perl'ün grep() fonksiyonunu kullanarak dosyanın tamamını bir seferde tarayabilirsiniz. Birinci yolu geçen bölümde öğrendiğimiz bilgilerle yapabilirsiniz. Bu bölümde ikinci yol olan grep() fonksiyonunu kullanarak bunu nasıl yapabileceğinizi anlatacağım. grep() fonksiyonunun kullanımı aşağıdaki gibidir.
Şimdi biraz daha gelişmiş bir örnek verelim. Aşağıdaki gibi, öğrencilerin okul numarası, isim ve yaş bilgilerinin kaydedildiği "ogrenci.txt" isimli bir veritabanı dosyamız olsun.
Bu programı "ogrenci1.cgi" adıyla kaydedin. Şimdi sıra bu scripti çağıracak formu hazırlamaya geldi.
<form action="http://www.sinanilyas.com/cgi-bin/ornek/ogrenci1.cgi"> Aradığınız kişinin ismini girin <input type="Text" name="isim"> </form>
Not: $#sonuclar @sonuclar dizisinin eleman sayısının bir eksiğini verir.
Formumuzdaki kutucuğa "Hasan" (tırnak koymadan) yazarsanız script size "Hasan Şahin" isimli öğrenciye ait bilgileri verir. Fakat, script kayıtları alan ayırımı yapmadan taradığı için isim yerine örneğin "15" (tırnaksız) yazarsak bize 15 yaşındaki ve okul numarasında 15 geçen öğrencilere ait bilgileri verir. Bunu hatayı gidermek için scriptimizi aşağıdaki şekilde değiştirmemiz gerekir.
if ($#sonuclar >= 0) { foreach $i (@sonuclar) { chomp($i); ($kayitno,$okulno,$adsoyad,$yas) = split(/\|/,$i); if ($adsoyad =~ $arananmetin) { print "<b>$adsoyad</b> Okul No: $okulno Yaş: $yas<br>\n"; $bulunansayisi++; } } }
if ($bulunansayisi == 0) { print "Kayıt Bulunamadı.<p>\n"; } else { print "<br><b>$bulunansayisi</b> kayıt bulundu.<p>\n"; }
print "</body></html>\n";
Not: if ($adsoyad =~ $arananmetin) satırı $arananmetin değişkenine atanan metnin, $adsoyad değişkenine atanan metnin içerisinde geçip geçmediğini bulmak için kullanılmıştır. Bu örnekte $bulunansayisi isimli değişkenin değeri sadece aranan metin "isim" alanında bulunduğu zaman arttırılır. Eğer aranan metin "isim" alanında değil de örneğin "yaş" alanında bulunursa kayıt ekrana yazdırılmaz ve $bulunansayisi değişkeninin değeri arttırılmaz. Scriptin sonunda $bulunansayisi değişkeninin değeri kontrol edilir ve eğer 0'sa "Kayıt bulunamadı" mesajı yazdırılır. Sinanilyas.com dan alıntıdır.
windowsta pc üzerinde nasıl yapıcaz. denemelerim olumsuz oldu. bi tane home.html dosyası actım. onun üzerinde denedim. enterlayınca direk ogrenci1.cgi icinde ki kodalara geciyo. bi cözüm bulamadım yardım edebilir misiniz?
veya free linux host biliyormusunuz 10 mb falan?
Konu mc_legal tarafından (10-10-2008 Saat 04:01 ) değiştirilmiştir..