Birkaç yıl önce devraldığım bir sunucuda, kimsenin dokunmaya cesaret edemediği bir klasör vardı: /scripts/legacy. İçinde onlarca .pl uzantılı dosya, hepsi log toplama ve rapor üretme işini sessizce yıllardır yapıyordu. “Bunlar Perl, dokunma, çalışıyor” dediler. Merak edip açtım, birkaç saatliğine kayboldum. Çünkü karşımda gördüğüm şey eski bir kod değil, bir dönemin bütün internetini ayakta tutan bir dildi.
Bu yazıda Perl’ün neden ortaya çıktığını, onu 90’ların yıldızı yapan gücünü, değişkenlerdeki o tuhaf sembollerin ne anlama geldiğini ve bir Perl kodunun ekranda görünene kadar arka planda neler yaşadığını anlatacağım. Sonunda kendi bilgisayarınızda ilk Perl dosyanızı çalıştıracağız.
Perl nedir, neden ortaya çıktı?

1980’lerin sonunda bilgisayar dünyasının bir derdi vardı: elde inanılmaz miktarda metin verisi birikmişti ama bunu işlemek işkence gibiydi. Sistem yöneticisi Larry Wall da bu dertle her gün boğuşanlardan biriydi. Elindeki C dili log dosyası okumak gibi basit işler için gereğinden fazla ağırdı, sed ve awk gibi araçlar ise yetersiz kalıyordu.
Sahada da sık gördüğüm bir refleks var: elindeki araç işini görmüyorsa, bazı insanlar şikayet eder, bazıları kendi aracını yazar. Larry Wall ikinci gruptandı. 1987’de oturup kendi dilini yazdı: Perl. Açılımı Practical Extraction and Report Language, yani pratik veri çıkarma ve raporlama dili. İsim tam da neden var olduğunu özetliyor.
Perl’ü 90’ların yıldızı yapan şey: regex gücü
Perl’ün en efsanevi özelliği regex, yani düzenli ifadeler desteği. Metin içinde arama, eşleştirme ve dönüştürme yapmak için o kadar güçlü ve esnek bir yapı sunuyordu ki, bugün hemen her dilin regex kütüphanesi bir şekilde Perl’ün motorundan ilham almış durumda.
Şöyle bir benzetme yapayım: Perl, o dönemde yazılımcının İsviçre çakısıydı. Log işleme, dosya dönüştürme, CGI tabanlı web scriptleri… 90’ların internetinde arka planda çalışan pek çok şeyin altında bir Perl scripti vardı. Üstüne CPAN adında devasa bir modül deposu geldi: veritabanı bağlantısından şifrelemeye kadar neredeyse her ihtiyaç için hazır bir modül bulabiliyordunuz. Bugün Python ve Ruby sahneyi devraldı, ama regex konusundaki bu miras hala ayakta.
Dolar, yüzde ve o dizi işareti ne anlama geliyor?
Perl koduna ilk bakan biri genelde aynı şeyi sorar: bu semboller ne? Aslında mantık basit, her sembol o değişkenin ne tür bir veri tuttuğunu baştan söylüyor.
- Scalar denilen tek değerli değişkenler dolar işaretiyle başlar:
$isim. - Diziler, yani birden fazla değeri sırayla tutan yapılar, “at” işaretiyle gösterilir:
@liste. - Hash yapıları, yani anahtar-değer çiftleri ise yüzde işaretiyle başlar:
%veri.
Bu küçük detay aslında büyük bir kolaylık. Kodu okurken değişkenin ne tür bir veri taşıdığını, tanımına bakmadan, sadece önündeki sembolden anlıyorsunuz.
“Bir işi yapmanın birden fazla yolu var” felsefesi
Perl’ün temel felsefesi, İngilizcesiyle there’s more than one way to do it ilkesine dayanır. Yani aynı işi bugün Linux’ta otomatik çalışan bir script olarak, yarın veri dönüştüren bağımsız bir araç olarak yazabilirsiniz; dil size tek bir doğru yol dayatmaz.
Bu arada ufak bir gözlem: bu özgürlük bazı ekipler için tam bir nimet, bazıları için de baş ağrısı oldu. Çünkü herkesin kod yazma alışkanlığı farklı, Perl de bu farklılığa izin veriyor. Aynı problemi on farklı geliştirici on farklı şekilde çözebilir, hepsi de doğru sayılır.
Perl arka planda aslında ne yapıyor?

Bir Perl scriptini çalıştırdığınızda perde arkasında üç aşama yaşanır. Önce parser kaynak kodu küçük parçalara, yani token’lara ayırır ve söz dizimini kontrol eder; değişkenler, operatörler, regex ifadeleri bu aşamada tanınır.
İkinci aşamada bu token’lar, platform bağımsız bir işlem ağacına, yani optree’ye dönüştürülür. Perl bu noktada bağlamı da belirlemeye başlar: aynı operatör, karşısındaki veri scalar mı yoksa array mi olduğuna göre farklı davranabilir. Son aşamada ise elde edilen bu işlem ağacı, C dilinde yazılmış Perl’ün çalışma zamanı çekirdeği tarafından doğrudan yürütülür; bellek yönetimi ve regex motoruna özgü işlemler de burada devreye girer.
Yani Perl ne saf bir derlenen dil, ne de saf bir yorumlanan dil. İkisinin arasında bir yerde duruyor, asıl hızını da buradan alıyor.
Uygulamalı: ilk Perl dosyanızı çalıştırmak
Perl’ü denemek için önce işletim sisteminize uygun dağıtımı indirip kurmanız yeterli. Ardından VS Code üzerinde Perl desteği sağlayan bir eklenti kurup .pl uzantılı bir dosya oluşturuyorsunuz.
use strict;
use warnings;
print "Selam Perl sevenler\n";
use strict ve use warnings satırları, kod yazarken yapacağınız hataları anında ekrana yansıtır; özellikle yeni başlayanlar için gözden kaçan bir yazım hatasını dakikalar sonra değil, o an fark etmenizi sağlar. Geri kalanı basit: print fonksiyonu, tıpkı diğer dillerdeki karşılıkları gibi, ekrana yazdırma işini görür.
Regex tarafını burada bilerek es geçtim, o konu tek başına ayrı bir yazıyı hak ediyor.
Son söz
- Perl, 1987’de Larry Wall’ın metin işleme derdine bulduğu bir çözüm olarak doğdu.
- Asıl gücünü regex desteğinden ve CPAN modül ekosisteminden alıyor.
- Değişkenler dolar, at ve yüzde sembolleriyle scalar, array ve hash olarak ayrılıyor.
- Kod, parse edilip bir işlem ağacına dönüştükten sonra C tabanlı bir çekirdek tarafından çalıştırılıyor.
Bugün sahnede Python ve Ruby olsa da, hala eski sistemlerde sessizce çalışan bir Perl scripti bulma ihtimaliniz düşük değil. Sorularınız olursa yorumlarda buluşalım.
