Guido Socher Yazar hakkinda: Guido uzun zamandır linux hayrani ve henuz Linux Focus'a editor oldu. Bu günlerde evini bahçesini dezenledigi için oldukça yoğun günler geçiriyor. Icerik: |
Özet:
Bu yazi perl ile ilgili yazi dizisinin baslangici ve bu yaziyi anlamak icin ozel bir deneyim sahibi olmaniz gerekmiyor. Diger bazi programlama dilleri(ornegin C veya Pascal) hakkindaki bazi bilgileriniz Perl ile calismanizi kolaylastirabilir.
Perl Larrt Wall tarafindan gelistirilmis bir programlama dilidir. Program kodlari perl kullanilarak direkt olarak calistirilabilir, herhangi bir derleme islemine gerek yoktur. Bu perl programi genelde /usr/bin/perl icerisine yuklenir. Perl temelde awk ve sed gibi klasik unix programlarina oldukca benzer ancak perl bunlardan aldigi temelleri oldukca ileri goturmustur. Bugun perl ile nesneye yonelik programlama yapmak ve grafiker kullanici arayuzleri olusturmak da mumkundur. Perlün yetenekleri kütüphanelerle dahada genişletilebilir. Bu kütüphanelerin çoğu perl arşivi olan CPAN da bulunabilir.Bu ilk yazı ıleri düzey konuları içermeyecek. Bu konulara daha sonraki yazılarda değinmeyi tercih ediyorum.
Perl çeşitli hünerleri ile çok kullanışlı evrensel programlama aracıdır.
Asagidaki programi my1stprg ismi ile kaydedin ve chmod 755 my1stprg komutu ile calistirilabilir hale getirin. Programi calistirip neler oldugunu gorun.
#!/usr/bin/perl -w
print "What is your name?\n"; $name=<STDIN>; #remove the new-line character: chomp($name); $len=length($name); print "\nHello $name! Your name is $len characters long\n"; |
Koda bakalim. Birinci satir yorum degildir.Bu tur satirlar unixin tipik bir özelliği olarak #! isareti ile baslar ve işletim sistemine bu dosya ile ne yapılacağını belirtir. İlk satırdan sonra # karakteri ile başlayan tüm satırlar yorum satırlarıdır(4. satıra bakınız).Ayrıca bütün ifadelerin noktalı virgül ile bittiğini görmekteyiz.Değişkenler dolar işareti ile başlar($).Perl değişkenleri dizi(string), tamsayı ve ondalıklı sayı değerleri alabilirler. The data gets converted automatically to the right type dependent on the context in which a variable is used. $-değişkenlerine scalar değişkenler denir. Perl, diziler($ yerine @ ile başlar) ve karışık tablolarda($yerine % ile başlar) içerir.Bu tür değişkenler ilerleyen yazılarda ele alınacak.
Ikinci satirdaki print fonksiyonu yazi dizisini standart ciktiya goruntuler.Bu komut kabuk programlamadaki echo komutuna karsi gelir ve eger dizi " " karakterleri arasinda ise degiskenler degerleri ile ciktida goruntulenir. ` ` karakterleri arasındaki degişkenler degerlerine çevrilmez ve \ \ karakterleri $ gibi özel karakterleri aktarmak için kullanılabilir.Aşağıda bir örnek yer almaktadır.
#!/usr/bin/perl -w
$name="joe"; print "1 $name\n"; print '2 ', $name , "\n"; print '3 ', '$name',"\n"; print "4 \"$name\"\n"; print "5 \$name\n"; print "6 \"\$name\"\n"; |
kaynağın ürettiği:
1 joe
2 joe 3 $name 4 "joe" 5 $name 6 "$name" |
Programimiza geri donelim.$name=<STDIN>; satırı ile kullanıcı bilgi girmesine imkan sağlanır ve enter tuşuna basması beklenir.Bu satırdan sonra kullanıcının girdiği bilgi $name değişkeni tarafından tutulur. chomp($name); komutu yeni satır karakterini $name değişkeninden kaldırır.Son olarak length fonksiyonu $name değişkenindeki harfleri sayar.
Ne yazık ki programımızın bir kusuru var.Kullanıcı isminin yerine tab veya boşluk karakteri girerse ne olacak?O da sayılacak.Bunu nasıl ayarlayabiliriz?
İhtiyacımız olan, $name değişkenindeki boşluk karakterlerini kaldıran bir fonksiyon olan replace fonksiyonu.Perl is very good in manipulating text strings and offers exactly this. [ \t] boşluk veya tab tuşlarını eşleyen bir ifadedir. Perl de bu daha kısa bır ıfade olan \s ıle de yapılabılır.Daha fazla bılgı için(uygun ıfadeler için okunabilir). The perl substitute command takes a regular expression and has the syntax: $name=~ s/regexp/replacement/g; If we leave the replacement string empty then all occurrences where the regular expression fits will be replaced with nothing. Now our program looks like this:
#!/usr/bin/perl -w
print "What is your name?\n"; $name=<STDIN>; #remove the new-line character: chomp($name); print "\nHello $name!"; #remove spaces from the string: $name=~s/\s//g; $len=length($name); print " Your name is $len characters long\n"; |
Bu program kontrol ifadeleri(döngüler ve if ifadeleri) içermediğinden çok kullanışlı bir program değil fakat basit bir fikir veriyor.Bu seri devam edecek ve daha karmaşık programlarla gelecek.
Ayrıca "man perl" ve "man perlfunc" komutlar ı da mevcut fonksiyonları görmek için kullanılabilir. Tüm bunların yanında O'Reilly nin kitabı olan ``learnıng perl`` gibi kitaplar yardımı ilede perl öğrenebilirsiniz.
Webpages
maintained by the LinuxFocus Editor team
© Guido Socher LinuxFocus 1999 |
|
1999-09-24, generated by lfparser version 0.7