web analytics
Perşembe, Haziran 4, 2026
No Result
View All Result
  • Giriş
Türk İnternet
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
  • Kişisel Verilerin Korunması
    • Çerez Aydınlatma Metni
    • İlgili Kişi Başvuru Formu
No Result
View All Result
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
  • Kişisel Verilerin Korunması
    • Çerez Aydınlatma Metni
    • İlgili Kişi Başvuru Formu
No Result
View All Result
Türk İnternet
No Result
View All Result

Perl Programlama – 2

Perl Yazı dizimize devam ediyoruz. Bu yazı dizisinde Perl'de arama fonksiyonun işlemesi inceleniyor. Farklı arama tarzları gösteriliyor.

Jonathan Eisenzopf-Jonathan Eisenzopf
17 Eylül 2001
-Genel
0
Facebook'ta PaylaşTwitter'da PaylaşLinkedin'de Paylaş

Bu yazıda 2 tür ifade göstereceğiz. İlki eşitlik/benzerlik (match) operatörü, ikincisi arama ve değiştirme operatörü (search/replace). Eşitlik/benzerlik operatörü iki slash arasında kullanılır. Bu slash’ların önünde “m” yer alır.

m/ifade/

Çoğu programcı bu öndeki m ‘i kullanmaz. Çünkü Perl Perl 2 tane slash gördüğünde onun bir ifade gösterdiğini bilir. Örnek verelim, bir dosyada ismimi arıyorsak, kod’un şöyle olması gerekir.

my $counter = 0;
while (<>) {
$counter++ if m/Jonathan/gi;
print "Found 2001 $counter timesn";}

Eğer bu script’in belli bir dosya içinde arama yapmasını istiyorsak, dosyanın adını vermemiz lazım. Bunu yönlendirme operatörü olan < ile yaparız.

match.pl < index.html

Bu script index.html dosyasındaki her satırı okuyarak adımı araştıracak ve iİsmimi bulduğu zaman $counter saydıracaktır. Script tüm satırları bitirdiğinde Jonathan adını kaç kere bulduğunu yazacaktır.

Tanmlamanın arkasında kullanılan iki karaketer vardır. (g ve i). Bunlara modifier denir. Özel bir anlamları vardır ve tanımın çalışma şeklini değiştirir. g modifier’I Perl’e herhangi bir yerde adımı bulsa bile aramaya devam etmesini söyler. Global Modifier olarak da adlandırılır. Aranan kelimeyi kaç kere bulursa bulsun, devam etmesini sağlar. Aksi takdirde kelimeyi ilk bulduğunda arama işlemi sona erecekti. İkinci modifier , i, Perl’e arama yapılırken büyük-küçük harf ayrımı yapmamasını söyler. Bu durumda başharfi büyük J olmayan bir JONATHAN bulsa bile sayılacaktır. Ya da adım tamamen büyük harfle yazılsa bile, bulmuş olacaktır.

Perl’ün normal ifadeleri, bize, kelimeleri, digitleri yada aralıkları temsil eden özel karakterler kullanmamıza da müsade eder. Bu karakter sınıflarını ters slash ve karakter olarak kullanılır. Alfanümerik karakterler için w, sayılar için d, boşluklar için s kullanılır. Alfanümerik karakterler a dan z’ye kadar harfleri ve 0 dan 9’a kadar rakamları temsil ederler. Bu özel karakter sınıfları, bir ifadeyi oluştururken, ifadeleri kısaltmamıza yardımcı olur. Mesela, insanlar bazen adımı Jonathan yerine Jon olarak kullanırlar. Bu durumda, eğer adım Jon olarak kullanılmışsa gözden kaçacaktır. O halde bunu da yakalamanın bir yolu olmalıdır. Yukarıdaki ifadeyi şöyle değiştirelim.

$counter++ if /Jon(wwwww)?/gi;

Şimdi, Jon ve ondan sonra 5 karakter arayacak bir ifade yazmış olduk. Burada yeni bir şey daha var, karakterler parantezlerle çevrişmiş durumda ve en sonunda bir soru işareti var. Soru işareti parantez içindeki sayıdaki kadar karakter bulmamızı yönetir ki bu nedenle “miktar belirleyici (qualifier)” olarak tanımlanır. Soru işareti, miktar belirleyici olarak doğru miktarı ya da yanlış miktarları bulmakta kullanılabilir. 2 başka miktar belirleyici vardır. + ve *. + ifadekinin 1 veya daha fazla olduğunu gösterir. * ise 0 ve daha çok olduğunu. Miktar belirleyici solundaki ifadeyi yönetir. Bizim örneğimizde, bu parantezin içindeki ifadedir. + Miktar belirleyicisini kullanmanın bir yolu şöyledir;

$counter++ if /Jon(w+)?/gi;

Yukarıdaki ifade, Jon ve Jon’a 1 ya da daha fazla karakter eklenmiş kelimeleri bulacaktır. Bunu * ile yazarsak.

$counter++ if /Jonw*/gi;

Miktar belirleyicisi, w karakterinden sonra yerleştirilmiş. Bu sadece Jon ya da arkasına bir kaç karakter eklenmiş kelimeleri bulacaktır. Ancak burada başka bir sorun var. Her iki yöntem, Jonathan dışında bir kelime de bulabilir. Karakterlerin tam sayısını belirleyecek yol şudur.

$counter++ if /Jon(w{5})?/gi;

Bununla Jon veya Jon+5 karakteri bulacaktır. Bu da tam istediğimiz sonucu vermeyebilir. İsim Jonothon olarak bulunabilir. Tam doğrusunu bulmak için, aradığımız karakterlerin kendisini belirtebiliriz.

$counter++ if /Jon(athan)?/gi;

Şimdi oldu. Şimdi ya Jon ya da Jonathan bulacak. Ancak bazen insanlar benim adımı farklı telafuz edip, sonunu AN yerine ON ile bitirebiliyorlar. Bu yanlış yazılmış isimleri de bulmak isteyeceğiz. Bu nedenle, bilinen karakter sınıflarını eklemmemiz gerekir. Yukarıdaki özel karakterler Perl’ün iç kullanımındaki sınıflar ama biz ayrıca ifade içinde, kelimenin içerdiği harfleri kullanabiliriz. Bu durumda köşeli parantezler kullanılır.

$counter++ if /Jon(ath[ao]n)?/gi;

Böylece yukarıdaki ifade, Jon, Jonathan ya da Jonathon’u bulacaktır. Gördüğünğz gibi ifadeler bize istediğimizi vermekte son derece esnek ve güçlü. Bu ifadeler düşündüğünğz herşeyi yapabilmenize olanak sağlıyor. Daha sonra sizlere XML ‘de yazılmış çok karmaşık bir ifadeyi göstereceğim.

Etiketler: BilgiWeb Geliştirme

Türk İnternet'ten buna benzer yazılar için bildirim almak ister misiniz?

ABONELİKTEN ÇIK
Jonathan Eisenzopf

Jonathan Eisenzopf

Lütfen yorum yapmak için giriş yapın.

GÜNLÜK BÜLTEN ABONELİĞİ

Aboneliğinizi onaylamak için gelen veya istenmeyen posta kutunuzu kontrol edin.

HAFTANIN ÖNE ÇIKANLARI

  • Mobil Sektör Yeniden Şekilleniyor; 2030’a Kadar Akıllı Telefonların Yaklaşık Yarısı Doğrudan Uydulara Bağlanacak
  • İran, ABD’ye Çok Uçak Kaybettirmiş ve Amerikalılar Çin ile Gelecekteki Savaş Konusunda Endişeli
  • Papa Leo XIV, Yapay Zeka Hakkında Çığır Açan Bir Genelge Yayınladı ve İnsanlığı “Dijital Tekel’e” Karşı Uyardı
  • Tunçmatik’ten Elektrikli Araç Kullanıcılarının “Menzil Kaygısını” Bitirecek Çözüm
  • Online Toplantılarda Yapay Zekâ Devrimi: Türk Mühendislerin Başarısı Edisyn

HAFTANIN KELİMESİ

3GPP

3. Nesil Ortaklık Projesi (3GPP), dünya çapında çeşitli mobil (hücresel) ve telekomünikasyon standartlarını geliştiren ve sürdüren bir grup standart kuruluşudur.

3G ile birlikte kurulmuş ve telekom endüstrisinin Birleşmiş Milletleri diye tanımlanabilir. Sonraki nesiller için de standartları belirlemiştir.

Detayı için Wiki-Turk'e bakınız

İNTERNET HIZI

Türkiye'nin İnternet Hızlarını Dünya ile KarşılaştırmakKaynak : https://www.speedtest.net/global-index#mobile
Facebook Twitter LinkedIn

Bildirimler

Turk-internet.com masaüstü bildirimlerini almak için lütfen buraya tıklayın

Son Yorumlar

  • ICANN, Yeterince Temsil Edilmeyen Toplulukları Yeni gTLD Başvuru Destek Programı İle Güçlendiriyor için Tolga Kaprol
  • BTK, Yabancı e-SIM Firmalarını Engelledi için Bulent SEN
  • Sahibinden.com Domain’inin Güncellenmesi Unutulmuş için Tolga Kaprol
  • İngiliz Düzenleyici Ofcom, Bulut Servislerini ve Akıllı Cihaz Pazarını Soruşturuyor için Tolga Kaprol
  • Seçim Yaklaşırken, Kişisel Veriler Kötüye Nasıl Kullanılır? için [email protected]

Türk İnternet'ten ilginize çekecek yazılar için bildirim almak ister misiniz?

Abone Ol

© Copyrights 2000-2025 - Bu sitede yayınlanan haber/söyleşi/makale ve bilgilerin tüm hakkı turk-internet.com'a aittir.

Tekrar Hoşgeldiniz!

Aşağıdan hesabınıza giriş yapınız

Şifremi unuttum?

Şifrenizi geri alın

Lütfen şifrenizi resetlemek için kullanıcı adı veya email adresinizi girin.

Giriş yap
No Result
View All Result
  • Ana Sayfa
  • BİLİŞİM
  • e-TİCARET
  • INTERNET
  • TELEKOM
  • YENİ TEKNOLOJİLER
  • Hakkımızda
  • Kişisel Verilerin Korunması
    • Çerez Aydınlatma Metni
    • İlgili Kişi Başvuru Formu

© Copyrights 2000-2025 - Bu sitede yayınlanan haber/söyleşi/makale ve bilgilerin tüm hakkı turk-internet.com'a aittir.