Perl PDG/1. Genel Bir Bakış

PERL PROGRAMLAMA DİLİNE GİRİŞ

İçindekiler:

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. ...