Perl PDG/0. Önsöz
PERL PROGRAMLAMA DİLİNE GİRİŞ
Önsöz
değiştirSöze, ilk olarak, "neden Perl konusunda İnternet'te yayınlanan türkçe bir kitap yazmaya karar verdim?" sorusu ile başlamak isterim. Burada, anahtar sözcükler, Perl, türkçe ve İnternet'tir. Perl, kanımca ve bir bakıma günümüzün BASIC dilidir; programlar çalıştırılmadan hemen önce, bir yorumlayıcı tarafından derlenir. Bundan dolayı, bir Perl programının kaynak kodunu, Perl yorumlayıcısının bulunduğu herhangi bir makineye koyduğunuz zaman, çalışmaya hazırdır. Perl'in bu taşınabilir olma özelliği C'ye (en çok sevdiğim derlenebilen programlama diline) benzer; belli başlı tüm sistemlerde (örneğin tüm UNIX'lerde ve Win32 platformlarında) çalışan Perl yorumlayıcıları bulunmaktadır.
İkinci anahtar kelime türkçe idi. Perl konusunda, İngilizce olarak bir çok kitap, makale ve İnternet üzerinde bilgi olmasına rağmen, türkçe kaynakların azlığı, beni bu konuda bir şeyler yazmaya yönlendirdi. Daha önce yazdığım C programlama dili ile ilgili türkçe kitap ve bilgisayar konusunda yaptığım çeşitli çeviriler beni yüreklendirdi. Bu kitaba başlarken aslında yazdığım konu hakkında detaylı bilgiye sahip olmadığımı ve konular ilerledikçe, okuyucu ile beraber kendimi de bilgilendirmek amacında olduğumu belirtmek isterim.
İnternet konusuna gelince, Perl yorumlayıcısı bir özgür yazılımdır. Özgür yazılım olduğu için, kaynak kodu herkes kolayca elde edebilir ve herkes kendi gereksinimlerine göre üzerinde değişiklikler yaparak kullanabilir. Böyle özgür bir yazılımla uğraşıldığı zaman, bu yazılımla ilgili her türlü bilgi ve dokümantasyonun da özgür olması gerekir. Bunun için, Perl ile ilgili birçok kitap (kısmen ya da tamamen) İnternet'te yayınlanmıştır.
Perl Nedir?
değiştirPerl konusunda en uzman kişi ve yaratıcısı olan Larry Wall, Perl'i şu şekilde tanımlamaktadır:
- Perl her türlü metin içeren dosyayı tarama, bu dosyalardan bilgiyi oluşturma ve bu bilgiye dayanarak raporlar üretme konusunda eniyileştirilmiş bir yorumlanan dildir. Ayrıca, birçok sistem yönetim işi için de iyi bir dildir. Dil güzel (küçük, zarif, şık) yerine pratik (kullanımı kolay, verimli, tam) olacak şekilde tasarlanmıştır. C, sed, awk ve sh’ın en iyi özelliklerini birleştirdiği için bu dillerle tanışıklığı olan kişiler fazlaca bir güçlükle karşılaşmazlar. (Dil tarihçileri, csh, Pascal ve hatta BASIC-PLUS’tan da bazı izler bulacaktır.) İfadelerin sözdizimi C'nin ifadeler için kullandığı sözdizime çok benzemektedir. Birçok UNIX hizmet programından farklı olarak, Perl verilerinizi sınırlamaz; örneğin, eğer belleğiniz varsa, tüm bir dosyayı tek bir karakter dizisi içinde yutabilirsiniz. Özçağrı derinliğinde sınır yoktur. İlişkilendirilmiş diziler için kullanılan "hash" tabloları, performansı bozmamak için gerektiği kadar büyüyebilir. Perl, büyük miktardaki verileri çok hızlı bir şekilde taramak için karmaşık desen eşlemesi teknikleri kullanmaktadır. Metin bilgisi için eniyileştirilmiş olmasına rağmen, Perl, aynı zamanda ikili verileri de işleyebilir ve dbm dosyalarını (eğer dbm varsa) ilişkilendirilmiş diziler gibi gösterebilir. Setuid Perl programcıkları, birçok aptal güvenlik açıklarını engelleyen bir veri akışı izleme mekanizması aracılığı sayesinde C programlarından daha güvenlidir. Eğer normalde sed, awk veya sh kullanarak çözeceğiniz bir problem varsa, ancak onların kapasitesi yetersiz kalıyorsa veya biraz daha hızlı çalışacak bir çözüm arıyor da C kullanacak kadar önemli bir çalışma yapmayacaksanız, Perl tam size göre olabilir. Ayrıca, yazmış olduğunuz sed veya awk programcıklarını Perl'e çeviren çevirici programlar da bulunmaktadır.
Yukarıda anlatılanlardan bazıları (sed, awk vs.) size pek bir şey ifade etmiyorsa, endişelenmeyin. Zira, Perl bir C, Pascal veya BASIC'ten pek farklı değildir; yani klasik bir programlama dilleriyle çözülen problemleri de Perl kullanarak pekala (ve muhtemelen daha az kodlama zamanı harcayarak) çözebilirsiniz.
Haa... Bu arada, Perl sözcüğünün nereden geldiğini merak edenler için şunları söyleyebilirim: Perl, "Pratik Çıkarım ve Raporlama Dili" (Practical Extraction and Report Language) sözcüklerinin baş harflerinden oluşmuştur. Perl'in sloganı ise "bir şeyi yapmanın birden fazla yolu vardır" (there's more than one way to do it). Perl'in yaratıcısına göre, bir Perl programcısının (yoksa herhangi bir programcının mı?) en önemli "erdemi" Tembellik, Sabırsızlık ve Ukalalıktır! Neyse, siz de benim gibi yapın ve bunları ciddiye almayıp keyif almaya bakın.
Perl'in Avantajları
değiştirPerl'in güçlü olduğu tarafları ve diğer avantajlarını tekrarlamak gerekirse; Perl'in iki önemli avantajı vardır: Listeler ve ilişkilendirimiş dizilerden oluşan devingen veri yapıları ve üstün performanslı desen eşlemesi sağlayan güçlü metin işleme özellikleri. Bunların dışında zengin ağ fonksiyonları, kalıcı veriler, nesne yönelimi gibi özellikler de içerir. Perl kullanarak çözülebilecek problemlerin yapısında genellikle veri indirgeme ve çözümlemesi, veri dönüşümü, doküman derleme ve yönetimi gibi özellikleri bulunur. (Yine anlaşılmaz bir dille yazmaya başladım! Neyse, zaten önsözleri kimse okumaz...)
Perl dili hızlı kodlamaya yardımcı olacak şekilde tasarlanmış olduğu için, fazlaca bildirim ve tanım yapmaya gerek yoktur. Yani, diğer programlama dillerinin aksine, yürütülebilir kod yazmadan önce, tipleri, değişkenleri veya altyordamları bildirmenize gerek yoktur. Bu, özellikle basit sorunlar çözmek için yazılacak olan programlarda çok yararlıdır. Perl'in diğer güzel özelliklerini ise kitabın geri kalan sayfalarında kendi kendinize bulacaksınız.
Perl'in zayıflıkları arasında ise, derlenen programlara göre, Perl'de yazılan programcıkların daha yavaş çalışması, bazı özel karakterlerin ($
, @
, #
vs.) çok sık kullanılması (örneğin, değişkenlerin önüne sürekli $
konması) ve bazı kişilere göre, bir işi yapmak için bir fazla yöntem bulunması sayılabilir.
Kullanılan Sistem
değiştirPerl taşınabilir bir programlama dili olmasına rağmen, bazı sistemlerde (özellikle Perl yorumlayıcısının o ortamdaki bazı hatalarından dolayı) bir takım farklılıklar ortaya çıkabilir. Sistemler arasındaki farklılıklar ve bazı Perl hataları İnternet'te bolca tartışılmaktadır. Bu kitapta verilen örnekler, Linux ve Windows altında çalışan Perl versiyon 5.8.6 ile test edilmiştir. Diğer sistemlerde de aynen çalışması beklenmektedir.
Kitabın Yapısı
değiştirBu kitap, temel yazı tipi dik yazıdır. Sözdizimsel gösterimde, sözdizimsel sınıflar italik yazı stili ile gösterilmiştir. İsteğe bağlı bölümler, arkalarında satır altına yazılan opt simgesiyle gösterilmiştir. Program bölümleri, ekran veya yazıcı çıktısına benzetilmek için, eşit aralıklı
yazı tipiyle yazılmıştır. Program açıklamaları italik
ile yazılmıştır. Bilgisayar girdi/çıktısı da eşit aralıklı
yazı tipiyle gösterilmiştir; çıktı, girdiden ayırt edilebilmesi için, alt çizgili
yazılmıştır.
Kitabın geri kalan kısmında ??? bölüm, ??? ek ve Perl programlama diliyle ilgili bazı kaynakların liste halinde verildiği bir bibliyografya vardır. Bölüm 1'de dile bir giriş yapılmakta ve basit programlar yazmak için gerekli olan genel bilgiler verilmektedir. Bölüm 2, Perl dilindeki temel veri tiplerini anlatmaktadır. Bölüm 3 kontrol deyimleri ve doğruluk-değerli, yani mantıksal, ifadeler üzerinedir. ..................... Ekler ise Perl yorumlayıcı ortamı ile ilgili bazı bilgiler içermekte, bazı problemlerin yanıtlarını vermekte ve kitapta kullanılan terimlerin İngilizce karşılıklarını bulmak için küçük bir sözlük içermektedir. Kitapta, olanaklar dahilinde, yaygın olarak kullanılan Türkçe terimler tercih edildiği için, İngilizce bilgisayar terimleri hakkında bilgi sahibi olan okuyucu, bu kitapta kullanılan Türkçe terimleri anlamak için bu sözlüğe başvurabilir.
Problemler
değiştir1. Aşağıdaki "Perl programcığı"nı sisteminizde çalıştırmaya çalışın:
print "Perl'den merhaba...";
Windows platformunda belki farketmeyebilirsiniz, ama program ekrana Perl'den merhaba...
yazısını yazdıktan sonra yeni satıra geçmemektedir. Bunu en iyi şekilde bir UNIX platformunda görebilirsiniz. Perl'de ekrana yazılan bir satırı bitirmek için en sona \n
eklemeniz gerekir.
Şimdi de aşağıdaki programın ne çıktı vereceğini kestirmeye çalışın:
print "bir"; print "iki\n";
2. Bir Perl programını çalıştırmanın yöntemleri nelerdir? Hangi komutları girmeniz gerekir? Bunu öğrenmek için etrafınızdaki deneyimli Perl kullanıcılarına danışın. Eğer durum gerçekten ümitsizse bu sayfanın tartışma bölümüne danışabilirsiniz.