Perl PDG/1. Genel Bir Bakış
PERL PROGRAMLAMA DİLİNE GİRİŞ
Genel bir bakış
[değiştir]Bu bölümde, basitten orta büyüklüğe kadar değişen Perl programları yazmak için size gerekli olan temel bilgileri vermeye çalışacağım. Burada amaç, sizi mümkün olduğu kadar çabuk bir şekilde Perl'de program yazmaya hazırlamaktır. Zaten bir programlama dilini bildiğiniz varsaydığım için, bu iş o kadar uzun sürmeyecektir. Bu bölümde havada kalan bazı kavramlar, daha sonraki bölümlerde daha detaylı açıklanacaktır.
Açıklamalar, Değişkenler, Fonksiyonlar
[değiştir]Bir Perl programı, tıpkı başka dillerde yazılanlar gibi, bir takım tanımlamalar ve deyimlerden oluşur. Genelde fazla tanım yapmanıza gerek yoktur; doğrudan program içinde yapmak istediğiniz şeyleri yazmaya başlayabilirsiniz.
Örneğin,
#!/usr/bin/perl -- -*- C -*- # ilk Perl programi print "Anapara: "; $anapara = <STDIN>; # deger oku print "Faiz orani: "; $oran = <STDIN>; print "Alacaginiz faiz: ", $anapara * $oran / 100 , "\n";
programını bir metin düzenleyiciye girip ilk.pl
isimde bir dosya içine saklayıp daha sonra aşağıdaki gibi çalıştırdığınızda, şuna benzeyen bir sonuç alırsınız:
$ perl -w ilk.pl Anapara: 5670 Faiz orani: 11.40 Alacaginiz faiz: 646.38
Şimdi ilk örnek programımıza bir bakalım. İlk satır biraz garip gelebilir; genellikle UNIX'te çalışanlar böyle bir satırla programlarına başlarlar. UNIX'in özelliğinden ötürü, herhangi bir yorumlanan dilde bir programcık yazıp bunu sadece dosya ismini vererek çalıştırmak istediğinizde, sistemin o dosya içinde hangi programlama dilinde program bulunduğunu anlaması için ilk satıra, o dilin yorumlayıcısının tam adı verilir. Örneğin, sizin UNIX sisteminizdeki perl yorumlayıcısı, /usr/local/bin/perl
yolunda bulunuyorsa, o zaman programınızın ilk satırı
#!/usr/local/bin/perl -- -*- C -*-
olmalıdır. Bu durumda programınızı çalıştırmak için sadece içinde bulunduğu dosya adını verebilirsiniz. Ancak, önce aşağıdaki UNIX komutunu girmeniz gerekecektir:
$ chmod +x ilk.pl
Bundan sonra,
$ ilk.pl
veya
$ ./ilk.pl
şeklinde programınızı çalıştırabilirsiniz. Eğer ilk satırınız farklı ise o zaman, yukarıdaki gibi uzun uzun
$ perl -w ilk.pl
yazmanız gerekir.
Öte yandan, Windows kullanıcıları için, programa yukarıdaki gibi bir satırla başlamanın anlamı yoktur, işletim sisteminde .pl
uzantılı dosyaların nasıl çalıştırılacağına dair tanım yapıldıktan sonra sadece dosya adını vererek programlarını çalıştırabilirler.
Bunun dışında, bazı DOS Perl ortamlarında pl2bat.bat
adında bir yardımcı program vardır. Bu programı şu şekilde kullanarak Perl programınızı bir DOS batch dosyasına çevirebilirsiniz:
C:\PROG\perl>pl2bat ilk.pl
Bu işlemden sonra, ilk.bat
isminde bir dosya oluşacaktır. Bu dosyanın ismini vererek programınızı çalıştırabilirsiniz:
C:\PROG\perl>ilk ...
Ancak,
Can't execute ilk.bat.
şeklinde bir hata mesajı alabilirsiniz. Bu durumda yapacağınız iki şey vardır:
Ya, Perl programlarını (DOS batch dosyalarını) içeren dizini PATH
'ınıza ekleyeceksiniz, ya da ilk.bat
dosyasına girerek,
perl.exe -w -S ilk.bat %ARGS%
satırını
perl.exe -w ilk.bat %ARGS%
şeklinde değiştireceksiniz.
Eğer bu işlemlerden sonra memnun kalır da ilk.bat
dosyasını kullanmayı tercih ederseniz, o zaman ilk.pl
dosyasını silin ve programda yapacağınız düzeltmeleri ilk.bat
dosyasında yapmaya devam edin.
Kitapta bundan sonra verilecek örneklerde, yer kazanmak amacıyla, ilk satır gösterilmeyecektir. Ancak, artık siz ne yapacağınızı biliyorsunuz.
Şimdi programımıza geri dönelim. İkinci satırda bir açıklama görmektesiniz: #
ile başlayan satırlar bir açıklamadır ve Perl yorumlayıcısı tarafından dikkate alınmazlar. Aynı zamanda, bir deyimden sonra satırın geri kalanına da bir açıklama konabilir, bunun için yine #
karakteri ile başlamak gerekir (dördüncü satırda yapıldığı için).
Üçüncü satırda kullanıcıya bir mesaj iletilir. Bu amaç için print
fonksiyonu kullanılmaktadır. print
'in arkasına yazacağımız mesajı çift tırnak içine koyarak yazarız. En sona ise, deyimi bitirmek için noktalı virgül koymamız gerekir. En sık yapılan hatalardan biri deyimi bitirmek için noktalı virgül konmamasıdır. Aynı satıra iki deyim yazabiliriz ya da bir deyimi iki satırda yazabiliriz. Yeter ki deyimi bitirmek için gerekli olan noktalı virgülü unutmayalım.
print
fonksiyonu istenen şeyi yazdıktan sonra satırı bitirmez. Satırı bitirmek için \n
kullanmamız gerekir (örnek programın son satırında yapıldığı gibi). Bu konu hakkında daha ileride bilgi verilecektir. Şimdilik, gereken yerde \n
kullanmayı unutmayın yeter.
Perl'de kullanıcıdan girdi almak için <STDIN>
işleci kullanılır. STDIN
, standart girdi dosyasıdır. Tıpkı C dilinde olduğu gibi, kullanıcının klavyesi bir dosya şeklinde değerlendirilebilir. Bir dosyanın etrafına <>
karakterlerini koyduğunuz zaman, o dosyadan bir sonraki satırı okursunuz. Okuduğunuz satırla birlikte satır sonu (\n
) karakteri de gelir. Örneğimizin dördüncü satırında, kullanıcıdan okunan satır $anapara
değişkenine atanır.
Perl'de değişkenlerin başında her zaman özel bir işaret konur. Basit değişkenler için $
kullanılır; başka tip değişkenler için başka işaretler kullanılır. Eğer değişkenin önüne $
koymazsanız, Perl yorumlayıcısı sizi uyarır.
Beşinci ve altıncı satırda benzer deyimler kullanılmıştır. Bunların ne yaptığını kendiniz tahmin edebilirsiniz.
Yedinci satırda ise bir hesaplama vardır. Hesaplamalar, Perl işleçleri, değişken ve değişmezler kullanılarak yapılır. Programlama deneyimi olan kişiler için $anapara * $oran / 100
ifadesi, anlaşılması zor bir şey değildir. Burada çarpı (*
) ve bölü (/
) işleçleri kullanılmıştır. Değişkenler dışında, bir de değişmez (100
) kullanılmıştır. İfadenin sonucu, anaparanın oranla çarpılarak yüze bölünmesidir. Uygun bir mesaj, hesaplamanın sonucu ve arkasına satır sonu işareti konarak oluşan bilgi kullanıcıya iletilir.
Son satırın da tamamlanmasıyla program sona erer. Programı erken bitirmek isterseniz uygun bir yere exit
deyimini koyabilirsiniz. Örneğin, son print
deyiminin üzerinde bir satır açıp
exit;
yazarsanız, kullanıcıdan sadece bilgiler alınacak, ancak herhangi bir sonuç görüntülenmeyecektir. exit
deyimi programdan çıkmak için kullanılır. Öte yandan, programın kaynak kodunun sonunu (açıkça) göstermek için __END__
satırını kullanabilirsiniz.
Örneğin, yine son print
deyiminin üzerinde bir satır açıp
__END__
yazarsanız bu sefer Perl yorumlayıcı programınızı __END__
satırına kadar okuyacağı için bazı uyarılar verebilir:
Name "main::anapara" used only once: possible typo at ... Name "main::oran" used only once: possible typo at ...
Bu durumda, Perl yorumlayıcısı programın son satırına bakmayacağı için, anapara
ve oran
değişkenlerinin program içinde sadece bir defa kullanıldığını varsayacak ve muhtemel bir hataya karşı sizi uyaracaktır.
Normalde, __END__
satırını kullanmanıza gerek olmayabilir, ancak exit
ve (ileride göreceğimiz) die
deyimlerini program içinde kullanmanız gerekebilir.
... devam edecek! ;) ...
Problemler
[değiştir]1. ...