Perl Eğitimi
Perl nedir?
Perl üst düzey, genel amaçlı, yorumlanan, dinamik bir programlama dilidir. Perl, Perl'in kısaltması olmasa da "Pratik Çıkarma ve Raporlama Dili" anlamına gelen bir terimdir. 1987 yılında Larry Wall tarafından tanıtıldı. Perl dili metin düzenleme için özel olarak tasarlandı. Ancak şimdi Linux sistem yönetimi, ağ programlama, web geliştirme vb. gibi çeşitli amaçlar için yaygın olarak kullanılmaktadır.
Basit bir şekilde ifade edelim. Bilgisayarlar sadece 0'ları ve 1'leri (ikili dil/makine dili/[düşük seviyeli dil]) anlarken, biz insanlar için ikili dilde programlama yapmak çok zordur. Perl, doğal dil öğelerini, ortak İngilizce dilinde kullanılan kelimeleri kullanan ve bu nedenle insanlar tarafından anlaşılması daha kolay olan bir programlama dilidir.üst düzey dil] Şimdi bir sorun var; bilgisayarlar, biz insanların kolaylıkla anlayabileceği yüksek seviyeli dilleri anlayamazlar. Bunun için yüksek seviyeli dili düşük seviyeli dile çevirebilecek bir şeye ihtiyacımız var. Burada tercüman yardımımıza geliyor. Tercüman, bilgisayarın programda yazılan talimatları anlaması ve yürütmesi için yüksek seviyeli dilde yazılmış programı düşük seviyeli dile dönüştüren bir yazılım parçasıdır. Dolayısıyla Perl bir yorumlanmış programlama dili.
Perl nerede kullanılır?
Perl kodlama dilinin gücü birçok alanda uygulanabilir. Perl'ün en popüler kullanımı Web geliştirmedir. Perl aynı zamanda Web sunucularındaki birçok görevi ve diğer yönetim işlerini otomatikleştirmek için de kullanılır; otomatik olarak e-postalar oluşturabilir ve sistemleri temizleyebilir. Perl hala asıl amacı olan veri çıkarmak ve rapor oluşturmak için kullanılıyor. Kaynak kullanımına ilişkin raporlar üretebilir ve ağdaki güvenlik sorunlarını kontrol edebilir. Bu nedenle Perl, web geliştirmede, ağ oluşturmada ve biyoenformatikte de kullanılan popüler bir dil haline geldi. Tüm bunların dışında Perl, CGI programlama için de kullanılabilir.
Perl ayrıca görüntü oluşturma ve işleme için de kullanılabilir. Telnet, FTP vb. aracılığıyla ağ oluşturmanın yanı sıra, Grafiksel Kullanıcı Arayüzü oluşturma, VLSI elektroniği ve spam uygulamalarını azaltmak için posta filtreleri oluşturma, Perl'ün bazı kullanım örnekleridir.
Perl aynı zamanda OOP (nesne yönelimli programlama) uygulamalarının uygulanmasıyla da bilinir ve her türlü kalıtımı (basit, çoklu ve elmas), polimorfizmi ve kapsüllemeyi destekler. Perl, Prosedürel ve OOP uygulamalarını aynı anda destekleyecek kadar esnektir. Perl ayrıca, Perl'de yazılmış kodları yazmanıza veya kullanmanıza/yeniden kullanmanıza izin veren ekstra modüllere de sahiptir. Python, PHP, PDL, TCL, Oktav, Java, C, C++Perl betiğinizde Basic, Ruby ve Lua. Bu, Perl'ü bu ekstra özelliklerle birleştirebileceğiniz anlamına gelir Programlama dilleri bunun yerine mevcut kodu yeniden yazmak.
Perl Programlama Dilinin Uygulamaları
Perl'ü neden kullanmalıyım?
Yukarıda belirtilenlerin hepsini yapmak için kullanılabilecek başka programlama dillerinin olduğu doğru, o halde neden özellikle Perl kullanmalısınız? Perl'ü öğrenmek çok kolaydırözellikle bilgisayar programlama konusunda geçmişiniz varsa. Perl, bilgisayarlar tarafından işlenmesini kolaylaştırmak yerine, insanların yazması ve anlaması kolay olacak şekilde tasarlandı. Düzenli ifadeler kullanır. Dilin doğal tarzı, belirli gramer ve sözdizimlerini kullanan diğer programlama dillerinden farklıdır; bu nedenle Perl çok esnektir ve size bir çözüm veya sorun üzerinde düşünmenin herhangi bir özel yolunu dayatmaz. Perl son derece taşınabilirdir. Perl yorumlayıcısı yüklü herhangi bir işletim sisteminde çalışabilir, bu nedenle platformdan bağımsızdır. Tüm Linux Operating Sistemleri Perl ile kurulu olarak gelir, böylece Linux'ta Perl kodlamaya hemen başlayabilirsiniz. Bu, kodun kullanılan Linux dağıtımının türüne göre değiştiği ve giderek daha az taşınabilir hale geldiği Shell betiklerinden farklıdır. Perl'de küçük spesifik görevler çok kolay ve hızlı hale geliyor. Yeni başlayanlara yönelik bu Perl eğitimi boyunca, belirli görevler için küçük, hızlı programları nasıl kodlayabileceğinizi öğreneceksiniz. Kökleri UNIX olan herhangi bir programlama dilini öğrenmeye başlamak için kullanılan klasik Merhaba Dünya programının basit bir örneğini ele alalım:
Örnek: Perl merhaba dünya
#!/usr/bin/perl print "Hello, world!";
Çıktı:
Merhaba dünya!
Yukarıdaki iki kod satırı, Merhaba dünya! Çok basit ve hızlı değil miydi? C bilgisi olan öğrenciler, C++ bu dillerde aynı çıktıyı elde etmek için çok daha fazla kod satırı gerektiğini bilecektir.
nedenini merak ediyor olabilirsin Perl internette çok ünlü. Web'de olan çoğu şeyin METİN ile ilgili olması ve Perl'ün metin işlemede çok iyi olması nedeniyle bu basittir. Perl'ü herhangi bir dille karşılaştırırsak Perl, Dosya işleme, metin işleme ve çıktı raporlama açısından iyi olan en iyi dil olacaktır.
Perl'ün en iyi avantajlarından biri, kullanmakta özgürsün
Perl topluluğu, yazılımın serbestçe elde edilebilir, serbestçe değiştirilebilir ve serbestçe dağıtılabilir olması gerektiğine güçlü bir şekilde inanmaktadır. Perl topluluğundan birkaç gönüllü, programlama dilini mümkün olduğu kadar iyi hale getirmeye çalışıyor.
Perl'in Avantajları ve Dezavantajları
Artıları: | Eksileri: |
---|---|
|
|
|
|
Başlayalım
Perl'ün tarihi ve Perl'de kodlama için gerekli bilgisayar programlamanın temel kavramları hakkında yeterli bilgiye sahip olduğumuzda, artık dalıp Perl'e başlamamızın zamanı geldi. Bir sonraki bölüm size Perl'ü sisteminize nasıl kuracağınızı ve Perl'de kodlama yolculuğuna nasıl hazırlanacağınızı öğretecek. Bu Perl kodlama eğitimi, öğrencilerin Perl'de kodlama için kullanacakları işletim sistemi olarak Linux'u alacaktır.
Perl'i İndirin ve Yükleyin – Windows, Mac ve Linux
Perl'ü nasıl edinebilirim?
Iyi haber muhtemelen sende var!
Ancak sisteminizde zaten bulamıyorsanız, yine de ücretsiz olarak alabilirsiniz.
Zaten Perl'ün kurulu olup olmadığını öğrenmek için komut satırına gidin ve şunu yazın: perl -v
Komut, yüklüyse Perl sürümünü görüntüleyecektir. Bu durumda sürüm v5.14.2'dir. Ama değilse… panik yapmayın…
Unix |
Zaten yüklenmiş Perl önceden yüklenmiş olarak gelir ancak en son sürüme güncellemeniz gerekebilir. |
Mac OS |
Zaten yüklenmiş OSX, Perl önceden yüklenmiş olarak gelir, ancak onu en son sürüme güncellemeniz gerekebilir |
Windows |
Yüklemeniz Gerekiyor İki Seçenek Mevcuttur
|
Linux'ta Perl'i güncellemek:
Perl sürümünü güncellemeniz gerekiyorsa tek bir komut satırı girmeniz yeterlidir.
sudo apt-get perl'i yükle
ve rahatla. Gerisi halledilecek. Aktif bir internet bağlantınızın olduğundan emin olun.
Bunun için perl'i yükleyin Windows:
Öncelikle Active Perl'i buradan indirin. Link. ActivePerl'i yüklemek için şu adımları izleyin Windows sistem. Aynısı için aşağıdaki ekran görüntülerine bakın.
1 Adım: Yükleyiciyi indirip kurulumu başlattığınızda aşağıdaki pencereyi göreceksiniz, devam etmek için ileri düğmesine tıklayın.
2 Adım: Kuruluma devam etmek için Lisans sözleşmesini kabul edin.
3 Adım: Aşağıda kurulacak farklı paketler bulunmaktadır. Varsayılan olarak tümü seçilecektir. Farklı olan tek şey PPM'dir (Perl Paket Yöneticisi). Bu, sisteminize harici Perl modülleri veya kitaplıkları yüklemek için Active Perl tarafından sağlanan yardımcı programdır. Devam etmek için İleri'ye tıklayın.
4 Adım: Bunlar Perl için kullanılabilecek farklı Perl uzantılarıdır. Çoğunlukla Perl için .Pl, .Plx ve .Pm kullanacağız. Perl modülleri temel olarak bir kütüphane dosyasına atıfta bulunmak için dosya uzantısı olarak .Pm'yi kullanır. Tüm seçenekleri seçin ve İleri düğmesine tıklayın.
5 Adım: Kuruluma devam etmek için Install butonuna tıklayın.
6 Adım: Kurulduktan sonra Perl'ün sisteminize başarıyla kurulup kurulmadığını kontrol etmek için 'Perl –v' komutunu çalıştırın.
Hem Linux'ta hem de Linux'ta Perl ortamını ayarlamak için tartışılması gereken birçok şey var. Windows, çünkü bu kurulumda çok fazla kütüphane dosyası bulunmayacak. Bunları manuel olarak yüklemeniz gerekir. Bunları CPAN'ı (Kapsamlı Perl) kullanarak manuel olarak yükleyebilirsiniz. Archive Network) veya sadece perl windows için çalışan PPM. Ancak bu dosyalar Perl'de kodlamaya başlamak için zorunlu değildir.
Bu Windows kurulumunun dışında şunları kullanabilirsiniz Windows Linux alt sisteminin Windows'a göre yeni özelliği ve Perl kodunu çalıştırmak için kullanımı
İlk Perl Programı
Hello world!
Perl Örneği: Merhaba Dünya
#!/usr/bin/perl -w #this is just a comment… print "Hello World";
Bu metni anlamadıysanız endişelenmeyin. Yakında her şey netleşecek. Hadi gelin satır satır bir göz atın:
#!/usr/bin/perl
Bu OperaSistem bu dosyayı /usr/bin/perl konumunda bulunan programla çalıştıracak. Bazı IDE'lerin bu satıra ihtiyacı yoktur. Eğer gerekliyse buraya tercümanınızın yolunu yazmalısınız. Hatırlamak! Bu özel satır programınızın başında olmalı ve #'den başlamalıdır! uyarıları kullanın; Bu, tercümana herhangi bir uyarıyı görüntülemesini söyleyen başka bir özel komuttur; yani -w, uyarıları genel olarak etkinleştirir.
print "Hello World";
Yazdırma talimatı ekrana metin yazar. Satırın sonundaki noktalı virgül perl yorumlayıcısına talimatın bittiğini bildirir. Perl kodundaki her talimatın sonuna noktalı virgül koymalısınız. Tırnak işaretine(“) dikkat edin. Yazdırma talimatı için gereklidir. Yukarıdaki betiği Firstprog.pl olarak kaydedin
On Windows
Strawberry'niz kuruluysa Çalıştır'a tıklamanız yeterlidir. Ayrıca komut satırı arayüzünü çalıştırabilir ve konsola yazabilirsiniz:
C:\> perl path\firstprog.pl
veya perl.exe yolunuzda değilse:
C:\> c:\perl\bin\perl.exe firstprog.pl
Linux/Unix'te
Terminali açıp şunu yazmanız yeterli:
perl firstprog.pl
Programı çalıştıramıyorsanız, çalıştırmaya uygun olduğunuzdan emin olun. Terminali yazın:
chmod +x firstprog.pl
Programınız artık çalıştırılabilir ve çalışmaya hazırdır. Çalıştırmak için şunu yazın:
./firstprog
Cpan eksi modüllerini yükleyin
Modüller, çeşitli programlarda ortak işlemleri gerçekleştiren görevleri gerçekleştirmek için kullanılan kodlar kümesidir. Perl modüllerini kullanıyorsanız aynı işlemi gerçekleştirmek için kodları yeniden yazmanıza gerek yoktur. Perl bu tür harici kod kitaplıklarından yararlanabilir. En iyi kütüphanelerden biri CPAN'dır. Kapsamlı Perl anlamına gelir Archive Network ve kullanmanız için çok sayıda Perl modülü içerir. Bu, bu tür modüllere katkıda bulunan çok sayıda geliştiricinin oluşturduğu bir topluluk veya ağdır. Perl modülünüze CPAN modülleri için destek yükleyerek, CPAN modüllerinden faydalanabilir ve işinizi kolaylaştırabilirsiniz. Çoğu Perl modülü Perl ile yazılmıştır, bazıları XS kullanır (C ile yazılmıştır) bu nedenle bir C derleyicisi gerektirir (bunu kurmak kolaydır - panik yapmayın. Modüller diğer modüllere bağımlılıklara sahip olabilir (neredeyse her zaman CPAN'de) ve bunlar olmadan (veya belirli bir sürümleri olmadan) yüklenemez. Aşağıdaki seçenekler için belgeleri dikkatlice okumaya değer. CPAN'deki birçok modül artık Perl'in son sürümünü (5.8 veya üzeri sürüm) gerektirir. Diğer modülleri yüklemeyi kolaylaştırmak için CPAN'den modülleri almak, paketini açmak, derlemek ve yüklemek için bir betikle cpan'ı yükleyin (daha sonra bize teşekkür edeceksiniz). Yüklemek için Uygulama-cpanminus Perl modülleri, komut satırına şunu yazın:
cpan App::cpanminus
cpan App::cpanminus Perl modülleri indirilip kurulurken internet bağlantınızın olduğundan emin olun.
Şimdi herhangi bir modülü kurun:
cpan –i <Module_Name>.
File::Data(Dosya Verilerine erişim için bir Arayüzdür) modülünün kurulumuna bir örnek görelim.
Perl Değişkeni
Şimdi değişkenler hakkında konuşacağız. Bir veya daha fazla değeri tutan bir tür konteyner gibi değişkenleri hayal edebilirsiniz. Bir kez tanımlandıktan sonra değişkenin adı aynı kalır ancak değeri veya değerleri tekrar tekrar değişir.
3 Tür değişken vardır:
Perl'de Değişken Türleri
En kolayı skalerdir ve bu da bugünkü konumuzdur
Skaler Değişken
Bu tür değişken tek bir değer tutar.
Adı bir dolar işareti ve bir Perl tanımlayıcıyla başlar (değişkenimizin adıdır).
Perl'de skaler değişken
Adlandırma kuralı
Eğer diğer programlama dillerine aşina iseniz değişkenlerin isimlendirilmesiyle ilgili bazı kuralların olduğunu bilirsiniz. Benzer şekilde Perl'ün skalerleri adlandırmak için üç kuralı vardır.
- Tüm skaler adlar $ ile başlayacaktır. Her ismin önüne $ koymayı unutmamak kolaydır. Bunu $skaler olarak düşünün.
- PHP'deki gibi. Perl'de özel olan ilk $ karakterinden sonra, a'dan z'ye, A'dan Z'ye ve 0'dan 9'a kadar alfanümerik karakterlere izin verilir. Alt çizgi karakterine de izin verilir. Değişken adlarını iki kelimeye bölmek için alt çizgi kullanın. 'Ama İlk karakter bir sayı olamaz'
- Rakamlar ismin bir parçası olabilse de, $ işaretinden hemen sonra gelemezler. Bu, $ işaretinden sonraki ilk karakterin bir alfabe veya alt çizgi olacağı anlamına gelir. C/C++ arka plan benzerliği hemen fark edebilmelidir. Örnekler
Perl'den Örnek:
$var; $Var32; $vaRRR43; $name_underscore_23;
Ancak bunlar yasal skaler değişken adları değildir.
mohohoh # $ character is missing $ # must be at least one letter $47x # second character must be a letter $variable! # you can't have a ! in a variable name
Genel kural şöyle diyor: Perl'de bir şeyden sadece bir tane varsa, bu bir skalerdir. Skalerler cihazlardan okunabilir ve programlarımızda kullanabiliriz.
İki Tür Skaler Veri Türü
- Numbers
- Dizeler
Numbers:
Bu tür skaler verilerde şunları belirtebiliriz:
- tamsayılar, basitçe tam sayılardır, örneğin 2, 0, 534
- kayan noktalı sayılar, gerçek sayılardır, örneğin 3.14, 6.74, 0.333
Dikkat: Genel olarak Perl yorumlayıcısı tamsayıları kayan nokta sayıları gibi görür. Örneğin programlarınızda 2 yazarsanız Perl bunu 2.0000 gibi görecektir.
Tamsayı değişmezleri:
İsteğe bağlı olarak önüne artı veya eksi gelen ve alt çizgi içeren bir veya daha fazla rakamdan oluşur.
Perl Örnekleri:
0; -2542; 4865415484645 #this also can be written with underscores (for clarity) : 4_865_415_484_645
Gördüğünüz gibi özel bir şey değil. Ama inanın bana, bu en yaygın skaler türüdür. Her yerdeler.
Kayan nokta değişmezleri:
Rakamlardan, isteğe bağlı olarak eksi, ondalık ayırıcı ve üslerden oluşur.
Perl Örnekleri:
3.14; 255.000; 3.6e20; # it's 3.6 times 10 to the 20th -3.6e20; # same as above, but negative -3.6e-20; #it's negative 3.6 times 10 to the -20th -3.6E-20; #we also can use E – this means the same the lowercase version -3.6e-20
Sekizli, Onaltılık ve İkili gösterim:
Ondalık sisteme alternatiftir. Size Sekizli, Onaltılı ve İkili gösterimi göstermeme izin verin. Kısa bir tablo bu tuhaf tarzlarla ilgili tüm önemli bilgileri sunar:
Temsil | baz | Devam eden: |
---|---|---|
Sekizli | 8 | 0 (sıfır) |
Onaltılık | 16 | 0x |
İkili | 2 | 0b |
Perl Örnekleri:
255; # 255 in decimal notation 0377; # 255 in octal notation 0xff; # 255 in hexadecimal notation 0b11111111; # 255 in binary notation
Perl için bu değerlerin tümü aynı anlama gelir. Perl değerleri aynı formatta saklamaz. Dahili olarak bu onaltılık, ikili, sekizli değerleri ondalık değerlere dönüştürecektir.
Atama, skaler üzerinde en yaygın işlemdir ve çok basittir. Perl bu eşittir işareti için kullanıyor. Sağ taraftan ifadenin bir değerini alıp bu değeri değişkenimize koyuyor.
Örneklere bir göz atalım:
$size=15; # give $size value of 15 $y = -7.78; # give $y value of -7.78
Dahası, değişkene yalnızca bir sayı değil aynı zamanda bir ifade de koyabilirsiniz.
$z = 6 + 12 # give $z value of 18
Dizeler
Strings: Aynı zamanda çok basit bir skaler türüdür.
Perl'de bir dizenin maksimum uzunluğu bilgisayarın sahip olduğu bellek miktarına bağlıdır. Dizenin boyutunda herhangi bir sınırlama yoktur; dizelerinizi herhangi bir miktarda karakter, sembol veya kelime oluşturabilir. En kısa dizenin karakteri yoktur. En uzun olanı tüm sistem belleğini doldurabilir. Perl programları tamamen 7 bitlik ASCII karakter setiyle yazılabilir. Perl ayrıca herhangi bir 8 bitlik veya 16 bitlik karakter kümesini (diğer adıyla) eklemenize de izin verir. dize değişmezleri içindeki ASCII olmayan karakterler. Perl ayrıca Unicode UTF-8 desteğini de ekledi.
Sayılar gibi iki farklı türde dize vardır:
- Tek tırnaklı dize değişmezleri
- Double dize değişmezlerinden alıntılar
Tek tırnaklı dize değişmezleri
Kelimenin tam anlamıyla anlaşılmasını istediğiniz verileri içine almak için tek tırnak işaretleri kullanılır. Kısa bir örnek ve her şey açık olmalı:
Perl Örnekleri:
#!/usr/bin/perl $num = 7; $txt = 'it is $num'; print $txt;
Çıktı:
bu $num
Burada tek tırnak nedeniyle $num değeri alınmadı ve '$','n', 'u' & 'm' değişmez karakterleri $txt değerine eklendi
Double-alıntılanan dize değişmezleri
Double tırnak işaretleri, işlenmeden önce enterpolasyon yapılması gereken verileri kapsamak için kullanılır. Bu, kaçış karakterlerinin ve değişkenlerin daha sonraki işlemlere tam anlamıyla eklenmediği, ancak anında değerlendirildiği anlamına gelir. Kaçış karakterleri, yeni satırlar, sekmeler vb. eklemek için kullanılabilir.
Perl Örnekleri:
$num = 7; $txt = "it is $num"; print $txt;
Çıktı:
7
Burada çift tırnak nedeniyle $num değeri alınır ve $txt değerine eklenir.
Double-quotes skaler ve dizi değişkenlerini enterpole eder, ancak karmaları enterpole etmez. Öte yandan, hem dizilerin hem de karmaların dilimlerini enterpole etmek için çift tırnak işareti kullanabilirsiniz.
Gizemli \n
Aşağıdaki programı göz önünde bulundurun
Perl Örnekleri:
print "hello \n";
Çıktı:
merhaba
Perl yalnızca 'merhaba\n' değil, yalnızca 'merhaba'yı görüntüler. Neden? Çünkü '\n' özel bir işarettir ve programınızda metni görüntülerken yeni bir satıra gitmek istediğiniz anlamına gelir. “merhaba\n yeni satır” yazdır; Sonraki soru: Başka özel bir işaret var mı? Evet onlar! Ama endişelenmeyin, sadece birkaçı. Aşağıdaki tabloyu kontrol edin
Kurmak | Tanım |
---|---|
\n | Yeni hat |
\r | dönüş |
\t | çıkıntı |
\f | form besleme |
\b | geri tuşu |
\a | çan |
\e | kaçış |
\ 007 | herhangi bir sekizlik ASCII değeri (burada, 007 = zil) |
\x7f | herhangi bir onaltılık değer (burada, 7f = sil) |
\\ | Ters eğik çizgi |
\ ” | çift alıntı |
\l | küçük harf sonraki harf |
\L | \E'ye kadar takip eden tüm harfleri küçük harf |
\u | büyük sonraki harf |
\U | \E'ye kadar takip eden tüm harfleri büyük harfle yazın |
\E | \L, \U'yu sonlandır |
Biliyorum, 'birkaç tane' yok… Ama inanın bana, şunu bilmeniz gerekir:
Dizeler Değişkeni
Sayı atamasında gördüğümüz işlemin aynısıdır. Perl dizemizi eşittir işaretinin sağ tarafından alır ve bu dizeyi bir değişkene koyar.
Perl Örnekleri:
$string = 'tutorial'; # give $string the eight-character string 'tutorial' print $string; $string = $size + 3 ; # give $string the current value of $size plus 3 print $string; $string = $ string * 5; # multiplied $string by 5 print $string;
Çıktı:
öğretici315
Gördüğünüz gibi sayıları ve dizeleri aynı değişkenlere koyabilirsiniz. Değişken sınıfı yoktur.
Dize Birleştirme (nokta):
Birleştirme operatörü “.” iki veya daha fazla diziyi birleştirir. Hatırlamak! Dize tırnak işaretleri, satırbaşları, ters eğik çizgiler içeriyorsa, tüm bu özel karakterlerin önüne ters eğik çizgi konulması gerekir.
Perl '' değişkeni Örnekler:
#!/usr/bin/perl $a = "Tom is"; $b = "favorite cat"; $c = $a ." mother's ". $b; print $c;
Çıktı:
Tom annenin en sevdiği kedidir
Teller
“$a”, “$b”, “.” kullanılarak “$c” içinde birleştirilir ve saklanır. Şebeke.
Sonunda…
Arasındaki Dönüşüm Numbers ve Dizeler:
Bildiğiniz gibi Perl, sayıları gerektiği gibi otomatik olarak dizeye dönüştürür. Perl şu anda neye ihtiyacımız olduğunu nereden biliyor? Bu çok basit; her şey operatöre bağlıdır (operatörler hakkında daha sonra konuşacağız, sadece sayılar ve diziler için farklı birçok operatörün olduğunu kabul edin) Eğer bir operatör bir sayı bekliyorsa, Perl bu değeri bir sayı olarak kullanacaktır. . Eğer bir operatör bir dizge bekliyorsa, Perl bu değeri bir dizge olarak kullanacaktır. Başka bir deyişle, bu tür bir dönüşüm konusunda endişelenmenize gerek yok. Kısa örnek ve her şey açık olmalı:
Perl Örnekleri:
$string = "43"; $number = 28; $result = $string + $number; print $result;
Çıktı:
71
$string'in değeri bir tamsayıya dönüştürülür ve $number'ın değerine eklenir.
Toplamanın sonucu olan 71, $result'a atanır.
Bir değişkenin kapsamı – Erişim Değiştiricileri
Programın herhangi bir yerinde bir skaler tanımlayabiliriz. Ancak bir erişim değiştirici belirtmeniz gerekiyor
3 tür değiştirici vardır
- my
- yerel
- bizim
My: Bunu kullanarak blok içinde spesifik olan herhangi bir değişkeni bildirebilirsiniz. yani süslü parantezlerin içinde.
#!/usr/bin/perl my $var=5; if(1) { my $var_2 =$var; } print $var_2;
Çıktı yok
Programın çıktısı hiçbir şey olmayacak!
Yukarıdaki örnekte, biri if bloğunun içinde ($var_2) ve diğerinin If bloğunun ($var) dışında olduğu bildirilen iki değişken olduğunu göreceksiniz. Bloğun dışında bildirilen değişkene if bloğu tarafından erişilebilir ancak if bloğunun içinde bildirilen değişkene dış program tarafından erişilemez.
Yerel: Bunu kullanarak aslında değişkenin orijinal değerini değiştirmeden aynı değişken değerlerini farklı değerlerle maskeleyebiliriz, diyelim ki değeri 5 olarak atanan bir $a değişkenimiz var, aslında bu değişkenin değerini şu şekilde değiştirebilirsiniz: Değişkenin orijinal değeri olan 5'i değiştirmeden aynı değişkeni local anahtar sözcüğünü kullanarak yeniden bildirmek. Bunun bir örnekle nasıl çalıştığını görelim.
#!/usr/bin/perl $var = 5; { local $var = 3; print "local,\$var = $var \n"; } print "global,\$var = $var \n";
Yukarıdaki programın çıktısı bu şekilde olacaktır.
yerel, $var = 3
genel, $var = 5
Bu şekilde değişkenin değerini orijinal değeri etkilemeden değiştirebiliriz.
Our: Bir değişken erişim değiştiricisi “our” ile bildirildiğinde tüm pakette kullanılabilir. Farz edelim ki, Perl modülünüz veya kapsamımız ile bildirilen bir değişkene sahip bir test.pm paketiniz var. Bu değişkene, söz konusu paketi kullanacak herhangi bir komut dosyasından erişilebilir.
Perl'de programlama konusunda ciddiyseniz programınıza şu şekilde başlamalısınız:
#! / usr / local / bin / perl
sıkı kullanın;
Bu daha iyi ve temiz kod yazmanıza yardımcı olacaktır. 'katı kullan', değişkenlerinizi anahtar kelimemle bildirmenizi sağlayacak katı pragmayı açar.
Bu iyi bir programlama uygulamasıdır
#!/usr/local/bin/perl use strict; $var = 10; print "$var";
Sonuç: Hata
#!/usr/local/bin/perl use strict; my $var = 10; print "$var";
Çıktı:
10
Perl Dizisi
Perl Dizisi nedir?
Dizi, verileri liste biçiminde saklayan özel bir değişken türüdür; her bir öğeye, her bir öğe için benzersiz olacak indeks numarası kullanılarak erişilebilir. Dizinizde sayıları, dizeleri, kayan değerleri vb. saklayabilirsiniz. Bu harika görünüyor. Peki Perl'de nasıl bir dizi oluştururuz? Perl'de '@' karakterini ve ardından vermek istediğiniz adı kullanarak bir dizi tanımlayabilirsiniz. Perl'de bir dizi tanımlamayı düşünelim.
benim @array;
Perl'de bir diziyi bu şekilde tanımlarız; veriyi nasıl saklamamız gerektiğini düşünüyor olabilirsiniz. Bir dizide veri saklamanın farklı yolları vardır. Bu, onu nasıl kullanacağınıza bağlıdır.
my @array=(a,b,c,d); print @array;
Çıktı:
ABCD
Bu, içinde 4 eleman bulunan bir dizidir.
Dizi dizini 0'dan başlar ve bildirilen maksimum boyutuna kadar biter; bu durumda maksimum dizin boyutu 3'tür.
Perl Dizisi Örneği
Ayrıca bir diziyi yukarıdaki şekilde de bildirebilirsiniz; tek fark, verileri sınırlayıcı olarak beyaz boşluğu göz önünde bulundurarak bir diziye depolamasıdır. Burada qw() alıntı sözcüğü anlamına gelir. Bu fonksiyonun önemi bir kelime listesi oluşturmaktır. Bir dizi bildirmek için qw'yi birden çok şekilde kullanabilirsiniz.
@array1=qw/a b c d/; @array2= qw' p q r s'; @array3=qw { v x y z}; print @array1; print @array2; print @array3;
Çıktı:
abcdpqrsvxyz
5'e bir değer atamak istediğinizi varsayalım.th bir dizinin elemanı, bunu nasıl yapacağız.
$dizi [4] ='e';
Sıralı Dizi
Sıralı diziler, verileri sırayla depoladığınız dizilerdir. Diyelim ki, bir dizide 1'den 10'a kadar sayı veya alfabe depolamak istiyorsunuz. Tüm harfleri yazmak yerine aşağıdakine benzer bir şey deneyebilirsiniz:
@numbers= (1..10); print @numbers; #Prints numbers from 1 to 10;
Çıktı:
12345678910
Perl Dizi Boyutu
Halihazırda mevcut olan bir dizimiz var ve siz bu dizinin boyutunun ne olduğunu bilmiyorsunuz, peki onu bulmanın olası yolu nedir?
@array= qw/a b c d e/; print $size=scalar (@array);
Fonksiyonları kullanmadan bir dizinin boyutunu alabilir miyiz? Evet yapabiliriz.
@array= qw/a b c d e/; print $size=scalar (@array); print "\n"; print $size=$#array + 1; # $#array will print the Max Index of the array, which is 5 in this case
Çıktı:
5
5
Dinamik Dizi
Bir diziyi bildirmenin yukarıdaki yöntemine denir statik diziler, bir dizinin boyutunu bildiğiniz yer.
Dinamik Dizi Nedir?
Dinamik diziler, üzerlerine herhangi bir değer belirtmeden bildirdiğiniz dizilerdir. Peki değerleri tam olarak ne zaman bu dizide saklıyoruz? Basit, bunları çalışma süresi boyunca saklıyoruz. İşte bunun için basit bir program.
Bu görevi gerçekleştirmek için bazı yerleşik Perl işlevlerini kullanacağız.
my $string="This is a kind of dynamic array"; my @array; @array=split('a',$string); foreach(@array) { print "$_ \n”; # This is a special variable which stores the current value. }
Çıktı:
Bu
bir nevi din
mikrofon
rr
y
Split işlevi, dizenin içeriğini kendisine sağlanan sınırlayıcıya göre bir diziye böler. Bu işlev aynı zamanda dizedeki sınırlayıcıyı da ortadan kaldıracaktır; bu durumda 'a'dır;
Perl dizileri için Push, Pop, kaydırma, kaydırmayı kaldırma:
Bu işlevler Perl'de dizi öğelerine eklemek/silmek için kullanılabilir.
- Perl Push: mevcut bir dizinin sonuna dizi öğesi ekler.
- Perl Pop: dizideki son öğeyi kaldırır.
- Perl Shift: diziden ilk elemanı siler.
- Perl Unshift: dizinin başına bir öğe ekler.
Aşağıdaki fonksiyonları kullanabileceğimiz bir örnek görelim.
@days = ("Mon","Tue","Wed"); print "1st : @days\n"; push(@days, "Thu"); # adds one element at the end of an array print "2nd when push : @days\n"; unshift(@days, "Fri"); # adds one element at the beginning of an array print "3rd when unshift : @days\n"; pop(@days); print "4th when pop : @days\n"; # remove one element from the last of an array. shift(@days); # remove one element from the beginning of an array. print "5th when shift : @days\n";
Çıktı:
1: Pzt Sal Çrş
2. basıldığında: Pzt Sal Çrş Per
3. vardiyayı kaldırdığında: Cum Pzt Sal Çrş Per
4. pop zamanı : Cuma Pzt Sal Çrş
5. vardiya: Pzt Sal Çrş
Perl Hash'leri
Neden Hash'e ihtiyacımız var?
Önceki bölümlerde skalerleri ve dizileri zaten öğrenmiştik.
Skalerler tam olarak ne işe yarar? Yalnızca tamsayıları ve dizeleri saklar.
Diziler tam olarak ne işe yarar? Bu, bir dizinin her öğesine indeksleri kullanarak eriştiğiniz bir skaler koleksiyonudur. Ancak yüzlerce ve binlerce kaydınız varken dizi kullanmak iyi bir fikir mi? Hangi endeksin hangi değere sahip olduğunu unutacağız. Bu durumun üstesinden gelmek için perl hash gibi bir şeye sahibiz.
Hash nedir?
Bir karma, dizinin tutabileceği kadar çok sayıda skaleri de tutabilir. Tek farkımız herhangi bir indeksimizin olmaması, bunun yerine anahtarlarımız ve değerlerimiz olması. % ile başlayıp karmanın adını takip eden bir karma bildirilebilir. Bir Perl karmasını nasıl tanımlayabileceğimize ve bunu diziden nasıl ayırt edebileceğimize bir örnek görelim.
Üç kişinin yaşlarının bir dizide temsil edildiği bir örneği düşünün.
@array=('Sainath',23,'Krishna',24,'Shruthi',25); #This is how an array looks. print @array;
Çıktı:
Sainath33Krishna24Shruthi25
Bu şekilde, tüm kişilerin hem adının dizin konumlarını hem de yaşını hatırlamamız gerektiğinden, bireysel yaşları bilmek zordur. 3 adınız olduğunda basit olabilir, ancak 1000 veya daha fazla adınız olduğunda? Cevabı biliyorsun.
Bunu hash kullanarak aşabiliriz.
Karma Örnek:
print %hash=( 'Sainath' => 23, 'Krishna' => 24, 'Shruthi' => 25); # This is how we create a hash. print %hash=('Sainath',23,'Krishna',24,'Shruthi',25);# This way of assigning is called list.
Çıktı:
Sainath33Krishna24Shruthi25Sainath33Krishna24Shruthi25
Şimdi bir karma ilan ettik, harika!! Peki buna nasıl erişeceğiz veya yazdıracağız? Karmadaki her öğeye, kendisine bir değer atanacak olan ilişkili anahtarıyla erişilmelidir. Yani karmadaki anahtar ve değerin her biri arasında bire bir eşleme vardır.
Herhangi bir kişinin yaşını yazdırmak için o kişinin adını hatırlamanız yeterlidir.
print $hash{'Krishna'}; # This how we should access a hash. Key enclosed within {}.
Neden $hash{KeyName} kullandığımı merak etmiş olabilirsiniz, karmanın yine bir skaler koleksiyon olduğunu unutmayın. Yani, her hash öğesine erişmek için skaleri temsil eden $ öğesini kullanabiliriz.
Not: Karmadaki her Anahtar benzersiz olmalıdır, aksi takdirde daha önce atanan değerinizi geçersiz kılacaktır.
Bir hash'i başka bir hash'e nasıl atayabiliriz? Basit, bizim yaptığımız gibi
Ayrıca karmanın tamamını yazdırabiliriz.
%hash=( 'Tom' => 23); %newHash=%hash; # Assigning hash to a new hashprint %newHash; print %newHash;
Çıktı:
Tom23
Perl Karmalarını Ekle
Gördüğünüz gibi zaten %newHash hash'imiz var ve şimdi ona daha fazla giriş eklememiz gerekiyor.
$newHash{'Jim'}=25; $newHash{'John'}=26; $newHash{'Harry'}=27; print %newHash;
Çıktı:
Jim25John26Harry27
Perl Sil tuşu
Bir karmadan bir girişi silmek isteyebilirsiniz. Bunu şu şekilde yapabiliriz.
delete $newHash{'Jim'};#This will delete an entry from the hash.
Silme, Perl'ün yerleşik bir işlevidir. Burada bir diziye hash atamanın bir örneğini göreceğiz.
@array=%newHash; print "@array";
Not: Bir karma değeri yazdırdığınızda veya karma değerini bir diziye depoladığınızda. Sıra her zaman farklılık gösterebilir. Her zaman aynı değil.
Bir diziye yalnızca karmanın anahtarlarını veya değerlerini atayabiliriz.
@arraykeys= keys(%newHash); @arrayvalues=values(%newHash); print "@arraykeys\n"; print "@arrayvalues\n"; # \n to print new line.
Hash'teki tüm girişleri kaldırmak için hash'i doğrudan null'a atayabiliriz.
%newHash=();# Bu, hash'i hiçbir giriş olmadan yeniden tanımlayacaktır.
Perl Koşullu İfadeler
Perl'de koşullu ifadeleri kullanabiliriz. Peki, koşullu ifadeler nelerdir? Koşullu ifadeler, kodunuzda bazı koşulların yerine getirilip getirilmediğini gerçekten kontrol ettiğiniz ifadelerdir.
Bir örnek düşünün; bir miktar meyve alıyorsunuz ve fiyatının 100 dolardan fazla olmasını sevmiyorsunuz. Yani buradaki kural 100 dolar.
Perl iki tür koşullu ifadeyi destekler; onlar eğer ve değilse.
Perl ise
Koşul doğru olduğunda kod bloğu yürütülecekse.
my $a=5; if($a==5) { print "The value is $a"; }
Çıktı:
5
Aksi takdirde Perl
Bu iyi görünüyor. $a’nın 5 olmadığı bir durumu düşünelim.
my $a=10; if($a==5) { print "The values is $a ---PASS"; } else { print "The value is $a ---FAIL"; }
Çıktı:
Değer 10 —FAIL
Bu şekilde aynı anda yalnızca bir durumu kontrol edebiliriz. Bu bir sınırlama mı? Hayır, if…elsif…else komutunu kullanarak çeşitli koşulları da kontrol edebilirsiniz.
Perl Başka Eğer
my $a=5; if($a==6) { print "Executed If block -- The value is $a"; } elsif($a==5) { print "Executed elsif block --The value is $a"; } else { print "Executed else block – The value is $a"; }
Çıktı:
Elsif bloğu çalıştırıldı –Değer 5
Yukarıdaki durumda, elsif bloğu $a eşittir 5 olarak yürütülecektir.
Hem if hem de elsif kod bloklarının başarısız olacağı durumlar olabilir. Bu senaryoda else kod bloğu yürütülecektir. Eklemeyi sevmiyorsanız, else kod kontrolünü gerçekten ortadan kaldırabilirsiniz.
Perl Yuvalanmış If
Bu durumda if kod bloğunu bir if kod bloğunda daha kullanabilirsiniz.
my $a=11; #Change values to 11,2,5 and observe output if($a<10){ print "Inside 1st if block"; if($a<5){ print "Inside 2nd if block --- The value is $a"; } else{ print " Inside 2nd else block --- The value is $a"; } } else{ print "Inside 1st else block – The value is $a"; }
Çıktı:
1. else bloğunun içinde – Değer 11
$a; değerini değiştirerek aynı kodu çalıştırın; gerisini öğrenebilirsiniz.
Perl sürece
Zaten ne olursa olsun bir fikriniz var (Koşul doğruysa kod bloğunu çalıştıracaktır). If'in tersi olmadığı sürece, koşul yanlışsa kod bloğu yürütülecektir.
my $a=5; unless($a==5) { print "Inside the unless block --- The value is $a"; } else { print "Inside else block--- The value is $a"; }
Çıktı:
1. else bloğunun içinde – Değer 5
Çıktının ne olacağını tahmin edin. Haklısın!!!!!. Çıktı, else bloğunun print ifadesi olacaktır. Kod bloğu doğru olmadığı sürece koşulu nedeniyle, sürece bloğun yalnızca koşul yanlış olduğunda yürütüleceğini unutmayın. $a değerini değiştirin ve kodu çalıştırın, farkı göreceksiniz.
Perl Kullanımı if
$a= " This is Perl"; if($a eq "SASSDSS"){ print "Inside If Block"; } else { print "Inside else block" }
Çıktı:
else bloğunun içinde
sürece kullanma
$a= " This is Perl"; unless($a eq "SASSDSS"){ print "Inside unless Block"; } else { print "Inside else block" }
Çıktı:
Engellemedikçe İçeride
Perl Döngüleri – Kontrol Yapıları
Perl diğer programlama dillerine benzer kontrol yapılarını destekler. Perl foreach, while ve Until olmak üzere dört tür kontrol yapısını destekler. Bu ifadeleri bazı kodları tekrar tekrar yürütmek için kullanırız.
Döngü Perl için
Çünkü kod bloğu koşul sağlanana kadar yürütülür. Perl'de bir diziyi nasıl döngülendireceğimize dair bir örnek alalım.
my @array=(1..10); for(my $count=0;$count<10;$count++) { print "The array index $count value is $array[$count]"; print "\n"; }
Çıktı:
Dizi indeksi 0 değeri 1'dir
Dizi indeksi 1 değeri 2'dir
Dizi indeksi 2 değeri 3'dir
Dizi indeksi 3 değeri 4'dir
Dizi indeksi 4 değeri 5'dir
Dizi indeksi 5 değeri 6'dir
Dizi indeksi 6 değeri 7'dir
Dizi indeksi 7 değeri 8'dir
Dizi indeksi 8 değeri 9'dir
Dizi indeksi 9 değeri 10'dir
Burada for() ifadesinde birçok ifade yer almaktadır. Her birinin bir anlamı var.
for (başlatma; koşul; artan)
İşte for'u kullanmanın başka bir yolu.
for(1..10) { print "$_ n"; print "\n"; }
Çıktı:
1n
2n
3n
4n
5n
6n
7n
8n
9n
10n
Perl Foreach
for her ifadesi for ile aynı şekilde kullanılabilir; Temel fark, bunda herhangi bir durum kontrolü ve artışımızın olmamasıdır.
Aynı örneği foreach perl ile ele alalım.
my @array=(1..10); foreach my $value (@array) { print " The value is $value\n"; }
Çıktı:
Değer 1
Değer 2
Değer 3
Değer 4
Değer 5
Değer 6
Değer 7
Değer 8
Değer 9
Değer 10
Foreach bir dizinin her elemanını alır ve her yinelemede bu değeri $var'a atar. Aynı amaçla $_ da kullanabiliriz.
my @array=(1..10); foreach(@array) { print " The value is $_ \n"; # This is same as the above code. }
Çıktı:
Değer 1
Değer 2
Değer 3
Değer 4
Değer 5
Değer 6
Değer 7
Değer 8
Değer 9
Değer 10
Bu, dizilere erişmek için iyi görünüyor. Hash'lere ne dersiniz, foreach kullanarak hash anahtarlarını ve değerlerini nasıl elde edebiliriz?
Karma değerin anahtarlarına ve değerlerine döngü yaparak erişmek için foreach'i kullanabiliriz.
my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25); foreach my $key (keys %hash) { print "$key \n"; }
Çıktı:
miki
Tom
Jerry
Neden foreach()'ta Anahtarlar kullandığımızı merak ediyor olabilirsiniz. Anahtarlar, karmanın anahtarlarına hızlı bir şekilde erişebildiğimiz, Perl'in yerleşik bir işlevidir. Peki değerler? Karma değerlerine erişmek için değerler fonksiyonunu kullanabiliriz.
my %hash=( 'Tom' => 23, 'Jerry' => 24, 'Mickey' => 25); foreach my $value(values %hash) # This will push each value of the key to $value { print " the value is $value \n"; }
Çıktı:
değer 24
değer 23
değer 25
Perl iken
Perl While döngüsü, kod bloğunun koşul doğrulanana kadar yürütüleceği bir kontrol yapısıdır.
Kod bloğundan yalnızca koşulun yanlış olması durumunda çıkılacaktır.
Perl While döngüsüne bir örnek verelim.
Burada kullanıcıdan giriş gerektiren ve '7' olarak belirtilen sayıya kadar çıkılmayacak bir problem var.
#!/usr/bin/perl $guru99 = 0; $luckynum = 7; print "Guess a Number Between 1 and 10\n"; $guru99 = <STDIN>; while ($guru99 != $luckynum) { print "Guess a Number Between 1 and 10 \n "; $guru99 = <STDIN>; } print "You guessed the lucky number 7"
Çıktı:
1 ile 10 Arasında Bir Sayı Tahmin Edin
9
1 ile 10 Arasında Bir Sayı Tahmin Edin
5
1 ile 10 Arasında Bir Sayı Tahmin Edin
7
Şanslı sayı 7'yi tahmin ettiniz
Yukarıdaki örnekte '7' dışında bir giriş girersek while koşulu doğru olmayacaktır.
Burada while'ın nasıl çalıştığını görürseniz, kod bloğu yalnızca a while'daki koşul doğruysa yürütülecektir.
Perl do-while
Do while döngüsü, while bölümündeki koşul yanlış olsa bile en az bir kez yürütülür.
Aynı örneği do while kullanarak ele alalım.
$guru99 = 10; do { print "$guru99 \n"; $guru99--; } while ($guru99 >= 1); print "Now value is less than 1";
Çıktı:
10
9
8
7
6
5
4
3
2
1
Şimdi değer 1'den az
kadar Perl
Ta ki kod bloğu, koşullu bir ifadede olmadığı sürece benzer. Burada kod bloğu yalnızca, Until bloğundaki koşulun yanlış olması durumunda yürütülür.
Bir süreliğine kullandığımız örneğin aynısını ele alalım.
Burada kullanıcıdan giriş gerektiren ve 'sai' dışında bir isim sağlanana kadar çıkılmayacak bir sorun var.
print "Enter any name \n"; my $name=<STDIN>; chomp($name); until($name ne 'sai') { print "Enter any name \n"; $name=<STDIN>; chomp($name); }
Çıktı:
Herhangi bir isim girin sai
Perl'e kadar:
Do Until yalnızca bir koşulun yanlış olması gerektiğinde kullanılabilir ve en az bir kez çalıştırılması gerekir.
print "Enter any name \n"; my $name=<STDIN>; chomp($name); do { print "Enter any name \n"; $name=<STDIN>; chomp($name); }until($name ne 'sai');
Çıktı:
Herhangi bir isim girin Howard
Herhangi bir isim girin Sheldon
Herhangi bir isim girin sai
Farkı görmek için while, do-while, Until ve do-until örnek kodlarını çalıştırın.
Perl Operator
Nedir? Operator mu?
OperaBilgisayar dilinde tor'lar, bilgisayarın anlayabileceği bazı değişkenler veya değerler kümesi üzerinde gerçekleştirilebilecek bir eylemi belirtir. Perl bunların çoğunu bünyesine dahil etti. OperaC dilinden tors. Perl diğer programlama dillerine göre daha fazla operatöre sahiptir. OperaTors, Aritmetik, Mantıksal, İlişkisel ve Atama Operatörleri olarak kategorilere ayrılır.
Aritmetik Operator:
Aritmetik operatörler, bazı temel matematik işlemlerini gerçekleştirmek için kullanılabilen operatörlerdir. Bu Aritmetik operatörler, temel bir işlemi gerçekleştirmek için iki argümana ihtiyaç duyduğumuz ikili operatörlerdir. Tekli operatörleri diğer temel işlemler için de kullanabiliriz; Aşağıdaki örneklerde farkı görebilirsiniz.
Kullanım | Tanım | Örnek E-posta |
---|---|---|
+ |
İki değer veya değişkenin eklenmesi için kullanılan toplama işlemi değerleri tutmak |
$x=5+6; # veya $y=6; $z=$x+$y; |
- |
İki değeri veya değerleri tutan değişkenleri çıkarmak için kullanılan çıkarma operatörü |
$x=6-5; # veya $y=6; $z=$x-$y; |
* |
İki değeri veya değerleri tutan değişkenleri çarpmak için kullanılan çarpma operatörü |
$x=6*5; # veya $y=6; $z=$x*$y; |
/ |
İki değeri veya değerleri tutan değişkenleri bölmek için kullanılan bölme operatörü |
$x=36/6; # veya $y=6; $z=$x/$y; |
** |
Üs sağlamak ve değeri almak için kullanılan üstel operatör. Örn: 22 = 43 = 27 |
$x=5**5; # veya $x=4; $y=2; $z=$x**$y; |
% |
İki değerin veya değer tutan değişkenlerin bölünmesi sırasında hatırlatma almak için kullanılan modül operatörü |
$x=5%2; # veya $x=10; $y=2; $z=$x % $y; |
++ |
Bir değişkenin değerini 1 artırmak için tekli toplama operatörü |
$x=5; $x++; Or ++$x; |
- |
Bir değişkenin değerini 1 azaltmak için Tekli Çıkarma operatörü |
$x=5; $x–; # sonrası azalma Or –$x;# ön azalma |
Yukarıdaki tüm işlemleri tamamlamak için örnek.
my $x=10; my $y=2; my $z; $z=$x+$y; print ("Add of $x and $y is $z \n"); $z=$x-$y; print ("Sub of $x and $y is $z \n"); $z=$x*$y; print ("Mul of $x and $y is $z \n"); $z=$x/$y; print ("Div of $x and $y is $z \n"); $z=$x**$y; print ("Exp of $x and $y is $z \n"); $z=$x%$y; print ("Mod of $x and $y is $z \n");
Çıktı:
10 ile 2'nin toplamı 12'dir
10 ve 2'nin alt kısmı 8'dir
10 ve 2'nin çarpımı 20'dir
10 ve 2'nin bölü 5'tir
10 ve 2'nin exp'si 100'dür
10 ve 2'nin modu 0'dır
Atama Operator:
Atama operatörleri basitçe değişkenlere değer atarlar ancak burada unutmamamız gereken bir şey daha var, atama operatörleri aynı zamanda aritmetik işlemleri de yapacak ve yeni değeri, işlemin yapıldığı değişkene atayacaktır.
Kullanım | Tanım | Örnek E-posta |
---|---|---|
+= |
Değeri aynı değişkene eklemek ve atamak için kullanılan toplama operatörü |
$x=4; $x+=10; |
-= |
Değeri aynı değişkene atamak ve çıkarmak için kullanılan çıkarma operatörü |
$x=4; $x-=10; |
*= |
Değeri aynı değişkene eklemek ve atamak için kullanılan çarpma operatörü |
$x=4; $x*=10; |
/= |
Değeri aynı değişkene atamak ve bölmek için kullanılan bölme operatörü |
$x=4; $x/=10; |
** = |
Üs almak ve değeri aynı değişkene atamak için kullanılan üstel operatör |
$x=4; $x**=10; |
%= |
Bölme işlemi sırasında hatırlatma almak ve değeri aynı değişkene atamak için kullanılan modül operatörü |
$x=10; $x%=4; |
Yukarıdaki tüm işlemleri tamamlamak için örnek.
my $x=10; $x+=5; print("Add = $x\n"); $x-=5; print("Sub= $x\n"); $x*=5; print("Mul = $x\n"); $x/=5; print("Div = $x\n");
Çıktı:
Ekle = 15
Alt = 10
Mul = 50
Böl = 10
Mantıksal ve İlişkisel Operator:
Perl sayıları ve dizeleri karşılaştırmak için mantıksal operatörleri kullanır. Çoğu zaman mantıksal operatörler Koşullu İfadelerde kullanılır.
Mantıksal ve İlişkisel OperaPerl'deki tors
Kullanım | Tanım |
---|---|
==veya eşdeğer |
Operator her iki değişkenin eşit olup olmadığını kontrol etmek için kullanılır |
!=Ya da hayır |
Operator her iki değişkenin eşit olup olmadığını kontrol etmek için kullanılır |
> veya gt |
Operator olup olmadığını kontrol etmek için kullanılır A, B'den büyüktür |
<or lt |
Operator olup olmadığını kontrol etmek için kullanılır A, B'den küçüktür |
>=veya ge |
Operator olup olmadığını kontrol etmek için kullanılır A, B'den büyük veya ona eşittir |
<=veya le |
Operator olup olmadığını kontrol etmek için kullanılır A, B'den küçük veya ona eşittir |
|| yada yada |
OperaA veya B'nin değeri tuttuğunu kontrol etmek için kullanılan tor |
&&veya ve |
OperaTor, hem A hem de B'nin değeri tuttuğunu kontrol etmek için kullanılır |
Tüm senaryoları açıklayabileceğimiz bir örnek ele alalım.
my $x=5; my $y=5; if($x == $y){ print ("True -- equal $x and $y \n"); } else{ print ("False -- not equal $x and $y\n"); } $x=6; $y=7; if($x != $y){ print ("True -- not equal $x and $y\n"); } else{ print ("False -- equal $x and $y\n"); } if($y > $x){ print ("True -- $y greater than $x\n"); } else{ print ("False -- $y greater than $x\n"); } if($x < $y){ print ("True -- $x less than $y\n"); } else{ print ("False -- $x less than $y\n"); } if($x <= $y){ print ("True -- $x less than $y\n"); } else{ print ("False -- $x less than $y\n"); } if($y >= $x){ print ("True -- $y greater than $x\n"); } else{ print ("False -- $y greater than $x\n"); }
Çıktı:
Doğru — 5 ve 5'e eşit
Doğru — 6 ve 7'ye eşit değil
Doğru — 7, 6'dan büyük
Doğru — 6, 7'den küçük
Doğru — 6, 7'den küçük
Doğru — 7, 6'dan büyük
Mantıksal operatörlerin örneklerini sonraki bölümlerde görebilirsiniz.
Perl Özel Değişkenleri
Perl Özel Değişkenleri Nedir?
Perl'deki özel değişkenler önceden tanımlanmış bazı anlamlara sahip olanlardır. Bu değişkenler ya gerçek Ad ya da Noktalama İşaretleri simgeleriyle gösterilir. Skaler özel değişkenler, Dizi özel değişkenleri, hash özel değişkenleri gibi Perl destekli tüm Değişkenler için özel bir değişkenimiz var. Kullandığımız özel değişkenlerin çoğu skalerdir.
Özel değişkeni ismiyle birlikte kullanmak istediğimizde, Perl yorumlayıcısına onun Adını kullanarak özel değişkenler kullanacağımızı açıkça söylemek için 'İngilizce kullan' şeklinde bir Perl modülü yüklememiz gerekir.
Skaler özel değişkenler
Değişken | Tanım |
---|---|
$_$ARG |
Bu, geçerli değerleri saklayan varsayılan değişkendir. |
$0 veya $PROGRAM_NAME |
Perl betiğinin dosya adını saklar. |
$/ |
Giriş kayıt ayırıcısı, yeni satır karakteri olan '\n' varsayılan değerine sahiptir |
$. |
Okunmakta olan dosyanın geçerli satır numarasını tutar |
$, |
Çıkış alanı ayırıcısı, bu esas olarak print() ifadesi tarafından kullanılır. Bunun varsayılan değeri 0 olarak ayarlanmıştır, bu değişkenin değerini değiştirebiliriz. |
$\ |
Çıkış kayıt ayırıcısı, bu değişkenin değeri boş olacaktır; çıktıyı yazdırırken print() deyiminin kullanacağı herhangi bir değeri buna atayabiliriz. |
$# |
Bu değişken sayıları yazdırırken çıktı formatı için kullanılır. |
$%$FORMAT_PAGE_NUMBER |
Okunan dosyanın geçerli sayfa numarasını tutar. |
$=$FORMAT_LINES_PER_PAGE |
Okunan dosyanın geçerli sayfa uzunluğunu tutacaktır. |
$-$FORMAT_LINES_LEFT |
Sayfadan yazdırılacak kalan satır sayısının değerini tutar. |
$~$FORMAT_NAME |
Format Adı: Varsayılan olarak seçili çıktının formatını, dosya tanıtıcı adını tutar. |
$^$FORMAT_TOP_NAME |
Dosya işleyicisinin başlık formatının değerini tutar; varsayılan değer _TOP ve ardından dosya tanıtıcı adı olacaktır. |
$|$OUTPUT_AUTOFLUSH |
Varsayılan sıfırdır; bu, her write() veya print() işleminden sonra çıktı arabelleğini temizlemek için kullanılır. |
$$ |
Perl yorumlayıcısının çalışan işlem numarasını tutacak. |
$? |
Durum kodu: Kanal ve sistem çağrısı. Yürütülen komutun dönüş durumu. |
$&$EŞLEŞME |
Düzenli ifadelerde kullanıldığında bu, son başarılı kalıp eşleşmesinin dizesini tutar. |
$`$ÖN MAÇ |
Düzenli ifadelerde kullanıldığında bu, son başarılı kalıp eşleşmesinden önce gelen dizeyi tutar. |
$'$SONMAÇ |
Normal ifadelerde kullanılan bu, son başarılı kalıp eşleşmesinin takip ettiği bir dizeyi tutar. |
$+$LAST_PAREN_MATCH |
Son kalıp aramasıyla eşleşen son parantez dizesini tutar. |
$ |
1$, 2$, 3$... Eşleşen desenin değerlerini sırayla tutar. |
$[ |
İlk dizin: Dizi, bir alt dize. |
$] |
Perl'ün bir versiyonu. |
$” |
Liste öğeleri için kullanılan ayırıcı, varsayılan değer olarak bir boşluktur. |
$; |
Çok boyutlu dizilerde kullanılan alt simge ayırıcı |
$! |
Sayısal bağlamda hata numarasını yazdırır. Dize bağlamında hatayı yazdırın. |
$@ |
eval() kullanıldığında kullanılan sözdizimi hatası bilgisini tutacak. |
$< |
Betiği çalıştıran işlemin gerçek UID'sini (kullanıcı kimliği) tutar. |
$> |
Betiği çalıştıran işlemin etkin UID'sini tutar. |
$( |
Betiği çalıştıran işlemin gerçek GID'sini (grup kimliğini) tutar. |
$) |
Betiği çalıştıran işlemin etkin GID'sini tutar. |
$^D$HATA AYIKLAMA |
Hata ayıklama bayraklarının geçerli değerini tutar. |
$^C |
–c komut satırı anahtarı kullanıldığında bayrağın geçerli değerini tutar. |
$^F |
Maksimum sistem dosyası tanımlayıcısı varsayılan değer olarak 2'ye ayarlıdır |
$^I$INPLACE_EDIT |
–i komut satırı anahtarının değerini tutar. |
$^M |
Özel Bellek havuzu, Perl betiği yetersiz bellek hatası nedeniyle öldüğünde kullanılabilir. |
$^O$OSNAME |
Operating sistem bilgileri saklanır. Linux sistemleri için 'Linux', Linux sistemleri için 'mswin32' Windows sistemler. |
$^T$BASETIME |
Komut dosyalarının saniye cinsinden çalıştığı süre. |
$^W$UYARI |
–w komut satırı anahtarının geçerli değeri. Uyarı anahtarı. |
$ARGV |
<> kullanıldığında geçerli dosyanın adı. |
Dizi Özel Değişkenleri:
Değişken | Tanım |
---|---|
@INC |
Geçerli komut dosyası yürütülürken Perl kitaplığı modüllerinin veya komut dosyalarının incelenebileceği yolların bir listesini içerir. Bu @INC, kütüphane modülleri için bu yollara bakmak amacıyla use ve require ifadeleri tarafından kullanılır. |
@ARGV |
İletilen komut satırı bağımsız değişkenlerini saklar. |
@_ |
Alt programlarda, parametrelerin alt programlara aktarılması sırasında kullanılır. |
@F |
Bu, otomatik bölme –a (komut satırı anahtarı kullanıldığında) sırasında giriş satırlarının depolandığı dizidir. |
Hash Özel Değişkenleri:
Değişken | Tanım |
---|---|
%INC |
Dosya adı anahtarlar olacaktır; değerler bu dosyaların yolu olacaktır. Do, use ve require tarafından kullanılır. |
% ENV |
Sistem çevresel değişkenleri. |
%SIG |
Signalişleyicisi. |
Perl Düzenli İfadesi
Normal İfade Nedir?
Perl düzenli ifadesi, bir ifade veya ifade grubu içindeki dize kalıplarını eşleştirmede yeterince güçlüdür. Düzenli ifadeler çoğunlukla metin ayrıştırma, desen eşleştirme ve gereksinime bağlı olarak çok daha fazlasında kullanılır. Düzenli ifade modeli bağlama =~ ve !~ tarafından özel olarak kullanılan belirli operatörlerimiz var. Bunlar test ve atama operatörleridir.
Düzenli İfade Operaları
Düzenli İfade OperaPerl'deki tors
- Perl Eşleşmesi — m//
- Perl Yedek – s///
- Perl Harf çevirisi – tr///
Daha ileri gitmeden önce düzenli ifadeyle ilgili birkaç şeyi bilmemiz gerekiyor; Perl Regex sözdiziminde Meta karakterler, joker karakterler gibi belirli şeyler vardır.
Char | anlam |
---|---|
\ |
Özel veya alıntı |
* |
0 veya daha fazla karakteri eşleştir |
+ |
1 veya daha fazla karakteri eşleştir |
? |
0 veya 1 karakteri eşleştir |
| |
Alternatif desenleri eşleştirmek için kullanılabilir |
() |
Eşleşen deseni saklamak için kullanılır |
[] |
Karakter kümesi aktarılabilir. Özellikle sayısal ve alfabe için kullanılır. |
{} |
Maçın gerçekleştirilebileceği süreyi sağlamak için kullanılır. |
^ |
Dizenin başlangıcı |
$ |
Dizenin sonu |
\w |
“_” dahil olmak üzere alfanümerik olabilen tek bir karakter veya kelimeyi eşleştirmek için kullanılır |
\W |
Alfanümerik dışındaki herhangi bir şeyi eşleştirin |
\s |
Boşlukları eşleştirmek için kullanılır |
\S |
Boşluk dışındaki herhangi bir şeyi eşleştir |
\d |
Numaraları eşleştirin. Ondalık değerler ve negatif değerler değil |
\D |
Sayılar dışında herhangi bir şeyi eşleştirin. |
\t |
Sekme alanını eşleştir |
\n |
Yeni satırı eşleştir |
Yukarıdakiler desen eşleştirme sırasında kullanılabilecek karakter kümesidir.
Birkaç örnek görelim.
Kullanıcının komut dosyası yürütme sırasında bir miktar girdi sağladığı bir durumu düşünün ve kullanıcının girdi olarak bir ad girip girmediğini kontrol etmek istiyoruz. Adınızı çıkarmak ve aynısını yazdırmak için normal bir ifade sözdizimi yazmamız gerekiyor.
my $userinput="Guru99 Rocks"; if($userinput=~m/.*(Guru99).*/) { print "Found Pattern"; } else { print "unable to find the pattern"; }
Çıktı:
Bulunan Desen
Burada /.*(Guru99).*/.* normal ifadesini bir dizedeki tüm karakterlerle eşleşecek şekilde yazdık. A '.' Perl regex eşleşmesinde boşluk dahil herhangi bir karaktere atıfta bulunulur.
Regex'i tam olarak nasıl oluşturabileceğimizi görelim.
Birden fazla kelime, rakam ve özel sembollerden oluşan bir dize örneğini düşünün: "Herkese merhaba bu benim numaram: +91-99298373639";
Regex: /^\w+\s\w+\s\w+\s\w+\s\w+\s\w+\:\+\d+\-\d+/i
Kelime alanı sözcük alanı sözcük alanı sözcük alanı sözcük alanı sözcük alanı özel karakter : boşluk özel karakter+rakamlar özel karakter –sayılar.
Perl Maçı Operaları
Eşleştirme operatörleri, bazı ifadelerin veya değişkenlerin içindeki bir dizeyi eşleştirmek için kullanılır.
my $var="Hello this is perl"; if($var=~m/perl/) { print "true"; } else { print "False"; }
Çıktı:
gerçek
Perl desen eşleşmesi bir değişkendeki dizeyi tanımladığından, bu küçük kod 'true' değerini yazdıracaktır. Temel olarak Perl, dize boyunca // ile sağlanan metni arar, tek bir yerde bulsa bile 'true' değerini döndürür. Desen değişkenin herhangi bir yerinde olabilir. Bu iki operatör arasındaki farkı görmek için =~ yerine !~ koymayı deneyebiliriz.
Perl Değişikliği Operator
Bu operatör herhangi bir karakteri boş veya başka bir karakterle aramak ve değiştirmek için kullanılabilir.
my $a="Hello how are you"; $a=~s/hello/cello/gi; print $a;
Çıktı:
çello nasılsın
Not: Aslında daha önce bu ikame operatöründe yaptığımız gibi herhangi bir kalıp eşleştirme dizesini de kullanabiliriz. Burada 'gi', g-global, i-ignore durumunu kullandık.
Perl Çevirisi Operator
Bu, Değiştirme'ye benzer, ancak herhangi bir Perl düzenli ifadesi kullanmaz; bunun yerine, değiştirmek istediğimiz değeri veya kelimeyi doğrudan iletebiliriz.
my $a="Hello how are you"; $a=~tr/hello/cello/; print $a;
Çıktı:
merhaba inek sen misin
Perl Dosyası G/Ç
Perl, dosyaları ve G/Ç işlemlerini etkili bir şekilde yönetmek için tasarlandı. Perl'ün ana avantajı, dosyaların ayrıştırılması ve işlenmesidir. Perl'de dosya işleme sırasında kullanılan birçok dahili fonksiyon ve operatör vardır.
Temel olarak Perl ile gerçekleştirilen dosya işlemleri FILEHANDLE kullanılarak yapılır. Bu FILEHANDLE'ı bir dosyayı okuma veya yazma için açarken tanımlamamız gerekir.
Bu Perl betiği eğitiminde şunları öğreneceksiniz:
Perl Dosyayı aç
Perl'de bulunan open() fonksiyonunu kullanarak bir dosyayı açabiliriz.
open(FILEHANDLE, "filename or complete path of the file");
Şimdi bir dosya açtık, şimdi bir soru ortaya çıkıyor. Okumak için mi yoksa yazmak için mi?
Perl Okuma dosyası ve Perl Yazma dosyası
Perl'de bir dosyayı okumak, yazmak veya eklemek için kullanılması gereken belirli modlar vardır.
Read – open(my $fh,"<filename or complete path of the file"); Write – open(my $fh,">filename or complete path of the file"); Append – open(my $fh,">>filename or complete path of the file");
Bir dosyayı okumak için birkaç örnek:
file.txt adında bir perl dosyamız olduğunu ve içinde birkaç satırlık metin bulunduğunu düşünün. Bu dosyayı açıp aynısını yazdırmamız gerekiyor.
open(FH,"<file.txt"); while(<FH>) # Looping the file contents using the FH as a filehandle. { print "$_"; } close FH;
or
open(FH,"<file.txt"); my @content=<FH>; # specifying the input of the array is FH. foreach(@content) { print "$_"; } close FH;
Bu, dosya içeriğini çıkış ekranına yazdıracaktır.
Şimdi perl dosyasına veri oluşturup yazacak bir program yazacağız.
open(FH,">test.txt"); my $var=<>; print FH $var; close FH;
Bu, çalışma zamanı sırasında sağlanan girdiyi yazacak ve girdiyi içerecek bir test.txt dosyası oluşturacaktır.
Yukarıdaki yöntem her zaman test.txt adında bir dosya oluşturmaya çalışacak ve girişi dosyaya yazacaktır; dosyayı eklemek için de aynısını yazacağız.
open(FH,">>test.txt"); my $var=<>; print FH $var; close FH;
Modu | Tanım |
---|---|
< |
Okumak |
+< |
okur ve yazar |
> |
Oluşturur, yazar ve keser |
+> |
Okuma, yazma, oluşturma ve kesme |
>> |
Yazar, ekler ve oluşturur |
+>> |
Okuma, yazma, ekleme ve oluşturma |
Artık temel örnekleri kullanarak dosyaların nasıl okunacağını, yazılacağını ve ekleneceğini görmemiz gerekiyor.
Dosyalar hakkında daha fazla bilgi edinmemize yardımcı olacak birkaç örnek ve diğer işlevleri göreceğiz.
Perl Anlat
Bu yöntem, FILEHANDLER'ın geçerli konumunu bayt cinsinden döndürür, aksi takdirde son satırı konum olarak kabul eder.
open(FH, "test.pl"); while(<FH>) { $a=tell FH; print "$a"; }
Perl Arama
Arama işlevi, fseek sistem çağrısına benzer. Bu yöntem, baytları ve ardından dosya işaretçisinin başlangıcını veya dosya işaretçisinin sonunu belirterek, dosya işaretçisini belirli bir konuma konumlandırmak için kullanılır.
seek FH, bytes, WHENCE;
NEREDE dosya işaretçisinin başlatılacağı konumdur. Sıfır bunu dosyanın başından itibaren ayarlayacaktır.
Örnek: input.txt dosyasında "Merhaba bu benim dünyam" gibi bazı veriler olsun.
open FH, '+<','input.txt'; seek FH, 5, 0; # This will start reading data after 5 bytes. $/ = undef; $out = <FH>; print $out; close FH;
Çıktı:
bu benim Dünyam
Perl Bağlantısını Kaldır
Bağlantıyı kaldır dosyayı silmek için kullanılır.
unlink("filename or complete file path");
Dizinlerin Kullanımı:
Ayrıca birden fazla dosyayı işleyebileceğimiz dizinleri de işleyebiliriz.
bir dizinin nasıl açılacağını görelim. opendir ve readdir yöntemlerini kullanabiliriz.
opendir(DIR,"C:\\Program Files\\"); #DIR is the directory handler. while(readdir(DIR)) # loop through the output of readdir to print the directory contents. { print "$_\n"; } closedir(DIR); #used to close the directory handler.
or
opendir(DIR,"C:\\Program Files\\"); @content=readdir(DIR); foreach(@content) { print "$_\n"; } closedir(DIR);
Bu, o dizindeki tüm mevcut dosyaları yazdıracaktır.
Perl Dosya Testleri ve Anlamları
-r |
Dosyanın/dizinin geçerli kullanıcı/grup tarafından okunabilir olup olmadığını kontrol etmek için |
-w |
Dosyanın/dizinin geçerli kullanıcı/grup tarafından yazılabilir olup olmadığını kontrol etmek için |
-x |
Dosyanın/dizinin geçerli kullanıcı/grup tarafından yürütülebilir olup olmadığını kontrol etmek için |
-o |
Dosyanın/dizinin geçerli kullanıcıya ait olup olmadığını kontrol etmek için |
-R |
Dosyanın/dizinin bu gerçek kullanıcı/grup tarafından okunabilir olup olmadığını kontrol etmek için |
-W |
Dosyanın/dizinin bu gerçek kullanıcı/grup tarafından yazılabilir olup olmadığını kontrol etmek için |
-X |
Dosyanın/dizinin bu gerçek kullanıcı/grup tarafından yürütülebilir olup olmadığını kontrol etmek için |
-O |
Dosyanın/dizinin bu gerçek kullanıcıya ait olup olmadığını kontrol etmek için |
-e |
Dosya/dizin adının mevcut olup olmadığını kontrol etmek için |
-z |
Dosyanın var olup olmadığını ve sıfır boyutta olup olmadığını kontrol etmek için (dizinler için her zaman yanlış) |
-f |
Girişin düz bir dosya olup olmadığını kontrol etmek için |
-d |
Girişin bir dizin olup olmadığını kontrol etmek için |
-l |
Girişin sembolik bir bağlantı olup olmadığını kontrol etmek için |
-S |
Girişin bir soket olup olmadığını kontrol etmek için |
-p |
Girişin adlandırılmış bir kanal (“FIFO”) olup olmadığını kontrol etmek için |
-b |
Girişin blok özel bir dosya olup olmadığını kontrol etmek için (bağlanabilir bir disk gibi) |
-c |
Girişin karaktere özel bir dosya olup olmadığını kontrol etmek için (bir G/Ç cihazı gibi) |
-u |
Dosya veya dizinin setuid olup olmadığını kontrol etmek için |
-g |
Dosya veya dizinin setgid olup olmadığını kontrol etmek için |
-k |
Dosya veya dizinin yapışkan bit ayarına sahip olup olmadığını kontrol etmek için |
-t |
Verilen dosya tanıtıcısı bir TTY'dir ( isatty() sistem işlevinde olduğu gibi, dosya adları bu testle test edilemez) |
-T |
Dosyanın bir “metin” dosyası gibi görünüp görünmediğini kontrol etmek için |
-B |
Dosyanın “ikili” bir dosyaya benzeyip benzemediğini kontrol etmek için |
-M |
Dosyanın Değişiklik yaşını (gün cinsinden ölçülür) kontrol etmek için |
-A |
Dosyanın Erişim yaşını (gün olarak ölçülür) kontrol etmek için |
-C |
Dosyanın Inode değişiklik yaşını (gün olarak ölçülür) kontrol etmek için |
Perl Alt Programı
Altprogram nedir?
Altyordamlar diğer programlama dillerindeki işlevlere benzer. Yazdırma, parçalama, kesme vb. gibi bazı yerleşik işlevleri zaten kullandık. Perl'de kendi alt programlarımızı yazabiliriz. Bu altprogramlar programın herhangi bir yerine yazılabilir; altprogramların kodun başına veya sonuna yerleştirilmesi tercih edilir.
Alt Program Örneği
sub subroutine_name { Statements…; # this is how typical subroutines look like. }
Artık bir altprogramın nasıl yazılacağını bildiğimize göre, ona nasıl erişeceğiz?
'&' simgesiyle ön eklenmiş alt program adını kullanarak bir alt programa erişmemiz veya onu çağırmamız gerekir.
sub display { print "this is a subroutine"; } display(); # This is how we call a subroutine
Perl Parametrelerini ve Perl argümanlarını iletmek
Yeniden kullanılabilir kodu içine yerleştirmek için alt programlar veya Perl işlevi yazılır. Yeniden kullanılabilir kodun çoğu, parametrelerin alt programa aktarılmasını gerektirir. Burada argümanları alt programa nasıl aktarabileceğimizi öğreneceğiz.
sub display { my $var=@_; # @_ is a special variable which stores the list of arguments passed. print "$var is the value passed"; } display(2,3,4); #this is how we need to pass the arguments.
Çıktı:
3 geçirilen değerdir
@_ altprogramlara aktarılan argümanları saklayan özel bir dizi değişkenidir.
Perl Shift
Aynı zamanda bir parametreyi bir değişkene kaydıran 'shift' anahtar sözcüğünü veya @_ dizisinin ayrı bir öğesi olan $_[0],$_[1]…'i de kullanabiliriz.
sub display { my $var=shift; print "$var is passed"; } display("hello");
Çıktı:
merhaba geçti
Alt rutinler genellikle nesne yönelimli programlamada ve ayrıca yerleştirilecek daha fazla yeniden kullanılabilir kodun bulunabileceği yerlerde kullanılır.
Altprogramların temel işlevi, bazı görevleri yerine getirmek ve yeniden kullanılabilir kodun sonucunu döndürmektir.
Return anahtar sözcüğünü kullanarak alt programdan bir değer döndürebiliriz.
sub add { my $a=shift; my $b=shift; return($a+$b); } my $result=add(5,6); print $result;
Çıktı:
11
$result, eklenen $a ve $b'nin değerini tutacak.
Ayrıca karmaları ve diziyi doğrudan alt programa aktarabiliriz.
sub hash { my %hash=@_; print %hash; } %value= ( 1=>'a', 2=>'b'); &hash(%value);
Çıktı:
1a2b
Ayrıca bir karma veya dizi de döndürebiliriz.
sub hashArray { my %hash=@_; print "Inside Sub-routine"; print %hash; return(%hash); } %hash=(1=>'a', 2=>'b'); my(@ret)=hashArray(%hash); print "After Sub-routine call"; print @ret;
Çıktı:
Alt rutinin içinde2b1aAlt rutin çağrısından sonra2b1a
Perl Formatı
Perl'ün raporlar oluşturabileceğimiz bir mekanizması var. Bu özelliği kullanarak Çıktı ekranında veya bir dosyada çıktı alırken tam istediğimiz gibi raporlar yapabiliriz. Perl'de mevcut olan printf veya sprintf işlevleri kullanılarak basit bir format yazılabilir.
printf "%05d\n", 30;
Bu, 30 sayısının önündeki sıfırları içerecek ve toplam rakam sayısını 5'e çıkaracaktır. Aynısı sprintf için de kullanılabilir.
sprintf "%05d\n", 30; # This will print the same as printf.
Printf ve sprintf'i kullanarak Perl formatlarının çoğunu elde edebiliriz. Rapor durumunda uygulanması zor olacaktır.
================================================== =========================
İsim Adres Yaş Telefon
================================================== =========================
Krishna Chennai 24 929309242
Shruthi Chennai 24 929309232
Yukarıdaki, Perl'de aynı şekilde yazdırmamız gereken örnek bir rapordur. Bu, Perl printf ve Perl sprintf kullanılarak başarılabilir. Format kullanılarak etkili bir şekilde uygulanabilir.
Bir format aşağıdaki şekilde bildirilebilir.
format FORMATNAME=FORMATLIST.
Burada verileri çıktı ekranına veya dosyaya yazdırmak için belirli bir yazma yöntemi kullanacağız.
sembol | Tanım |
---|---|
@ |
Alan sahibinin başlangıcını temsil etmek için kullanılır |
> |
Metnin sağa hizalanması |
< |
Metnin sola hizalanması |
| |
Orta hizalama |
# |
Birden fazla # sağlanmışsa sayısal. Tek # sağlanmışsa yorum olarak kabul edilir |
. |
Ondalık nokta |
^ |
Alan tutucunun başlangıcı aynı zamanda çok satırlı ve kelime kaydırma için de kullanılabilir |
~ |
Değişken boşsa satır boş olmalıdır |
@* |
Çoklu satırlar. |
($name,$addr,$age,$phone)=("krishna","chennai","24","929309242"); write; ($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); write; format STDOUT_TOP= =============================================================== NAME ADDRESS AGE PHONE =============================================================== . format STDOUT= @<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< $name, $addr, $age, $phone .
Çıktıyı görmek için kodu çalıştırın.
Alan tutucusunun veya dizenin başlangıcını belirtmek için @ sembolünü, her karakterin '<' olmasını kullanıyoruz.
Standart çıktıya yazdırmak için STDOUT kullanıyoruz. Bunu, dosyaya veri yazmak için kullandığımız dosya işleyicisine değiştirebiliriz.
open(REPORT,">test.txt"); ($name,$addr,$age,$phone)=("krishna","chennai","24","929309232"); write REPORT; ($name,$addr,$age,$phone)=("shruthi","chennai","24","929309232"); write REPORT; format REPORT_TOP= =============================================================== NAME ADDRESS AGE PHONE =============================================================== . format REPORT= @<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<< @<<< @<<<<<<<<<< $name, $addr, $age, $phone
'<' yerine '>' veya '|' koyabiliriz metnin hizalamasını değiştirmek için. STDOUT_TOP formatın başlığını tasarlamak için kullanılır. Aynısını FH_TOP (FH dosya işleyicisidir) kullanarak dosya işleyicisi için de kullanabiliriz. Bu, formatın çalıştığımız dosyaya çıktısını verecektir. Açık.
Perl Kodlama Standartları
Her programcının belirli standartları kullanarak kendi kodunu yazma anlayışı olacaktır; bu standartlar diğer programcıların kodu anlayıp destekleyebileceği kadar tanıdık olmalıdır.
Perl'de Kodlama Standartları
Kod yazmak basit ve kolaydır. Daha sonraki aşamalarda bakımının yapılması gerektiğinde sorun ortaya çıkıyor. Kodu yazarken uygun yönergelere ve kodlama standartlarına uyulması gerekir. Perl ayrıca programcıların kod yazmasında faydalı olacak belirli standartları da tanımlar. Kod yazarken 'strict' ve 'uyarı modülünü' yüklemeniz tavsiye edilir. Bu modüllerin her birinin kendine göre önemi vardır. Strict, değişkeni kullanmadan önce bildirmemizi sağlayacak ve ayrıca kodunuzda herhangi bir çıplak kelimenin bulunup bulunmadığını da söyleyecektir. Uyarılar modülü alternatif olarak Shebang'daki Perl yorumlayıcısına '-w' seçeneğini ileterek kullanılabilir. Uyarılar çıkış ekranına yazdırılacaktır.
#!/usr/bin/perl –w
Aşağıda birkaç standart listesi bulunmaktadır.
- 'Katı' ve 'uyarılar' modülünü kullanın.
- Kullanılmayan değişkeni kaldırın.
- Değişken adları diğer kullanıcılar tarafından anlaşılır olmalıdır. Örn: $isim, @fileData vb.
- Bir betiği kodlarken dokümantasyon gereklidir.
- Herhangi bir değeri sabit kodlamayın, bunun yerine bunları dinamik olarak almayı deneyin veya kullanıcıdan çalışma zamanı sırasında girmesini isteyin. (Dosya yolu, Dosya adları).
- Kodun yeniden kullanımını en üst düzeye çıkarın. Yeniden kullanılabilir kodu alt programlara yerleştirmeye çalışın.
- Altprogramlara anlam tam adları verilmelidir.
- Alt programların uygun yorumlar ve belgelerle yazılması gerekir.
- Değişkenleri her zaman başlat.
- Sistem çağrıları için daima dönüş kodlarını kontrol edin. Bir dosyanın açılması gerçekleşebilir veya gerçekleşmeyebilir; burada bir dönüş kodunun bulunması, dosya mevcut değilse hata durumunu gösterecektir.
Örn: açık(FH,
- Altprogram her zaman bir değer döndürmelidir.
- Aynı çizgide kıvırcık açın.
- Tek satır BLOK kıvırcık ile tek satır halinde yerleştirilebilir.
- DÖNGÜLER sırasında etiketleri kullanın, gerektiğinde döngüden çıkmak kolay olacaktır.
- Uzun kelime öbekleri değişken adı veya alt program olarak yazılırken alt çizgi kullanın.
- Kodlama sırasında basit regex kullanmaya çalışın.
Kodlama standartlarıyla mükemmel örnek:
####################################################################### Program to read the file content # Date: 22-2-2013 # Author : Guru99 ######################################################################## #!/usr/bin/perl use strict; use warnings; my $line; open FR, "file.txt" || die("Cannot open the file $!"); while ($line=<FR>) { print $line; } # Looping file handler to print data
Perl Hata İşleme
İstisna nedir?
İstisna, programın yürütülmesi sırasında meydana gelen ve programınızı askıya alacak veya sonlandıracak bir olaydır.
Hata işleme
Hata İşleme, her programcının programlama sırasında dikkat etmesi gereken bir konudur. Perl ayrıca hatayı yakalayıp uygun şekilde ele alabileceğimiz hata işleme teknikleri de sağlar.
Perl'de Hata İşleme
Programdaki hatayı kontrol etmenin birçok yolu vardır. Kodunu kullandığımız fonksiyonun dönüş kodlarını incelememiz gerekiyor. Eğer bu dönüş kodlarını doğru bir şekilde ele alabilirsek, hata yönetiminin büyük bir kısmını başarabiliriz.
Sistem çağrıları durumunda ne dönecek?
Sistem çağrıları durumunda, dönüş durumu iki özel değişkende $? Ve $!
$! – Bu, hata mesajıyla ilişkili hata numarasını veya hata numarasını yakalayacaktır.
$? – Bu, dönüş durumu system() fonksiyonunu tutacaktır.
Perl operatörünü veya Mantıksal'ı kullanma
Sistem çağrılarını kullanırken hata yönetimi için mantıksal veya operatör kullanabiliriz.
Ex:
open(FH,"<test.txt");
Bu, dosya mevcutsa dosyayı okuma modunda açacaktır.
Dosya eksikse ne olur?
open(FH,"<test.txt") or die("File not exists $!"); # This will perl exit the program if the file not exists. open(FH,"<test.txt") or warn ("File not exists $!"); # This will print a warning message on STDERR
Perl Eval
Eval işlevi ölümcül hataları, derleme zamanı hatalarını, çalışma zamanı hatalarını ve belirli bir zamanda kodunuzu sonlandıran hataları işleyebilir.
Perl Eval işlevi bir kod bloğuna veya bir ifadeye sahip olabilir. Evals, içine yerleştirilen her şeyi bir dize olarak kabul eder.
Kodda tanımlanmayan bir altprogramın çağrılması durumunu düşünün. Bu durumda, komut dosyası "tanımsız altprogram &XYZ, bu hata eval işlevinde ele alınabilir" diyerek sonlandırılır.
evals bloğunun birçok kullanımı vardır; Böyle bir kullanım, çalışma zamanı sırasında işletim sistemine özel modülü yüklemek istediğimiz zamandır.
Örn: Sıfıra bölmek önemli bir hataya neden olur; Bunu halletmek için kodu evals bloğuna yerleştirebiliriz.
$a=5; $b=0; eval { '$result=$a/$b'; } if($@) { print "$@"; # All the error codes returned by evals will get stored in $@. }
Çıktı:
C:\Users\XYZ\Text.pl satır 8'de sözdizimi hatası, ") yakınında
{“
Derleme hataları nedeniyle C:\Users\XYZ\Text.pl'nin yürütülmesi durduruldu.
Örnek: Perl die ifadesini kullanarak eval.
sub test { die "Dieing in sub test \n"; } eval { test(); }; print "Caught : $@\n";
Çıktı:
Yakalandı: Alt testte ölmek
Perl'i Kullanmayı Deneyin
Perl, diğer programlama dilleri gibi try, catch ve son olarak kod bloklarını desteklemez. Bunları harici bir Perl modülü yükleyerek hala kullanabiliriz.
deneyin::Tiny;
Bunu kullanarak kodunuzu try bloğuna yerleştirebilir ve warn bloğundaki hatayı yakalayabiliriz.
Değerlendirmede kullanılan $@ yerine Try::Tiny $_ kullanır.
# hataları bir catch işleyicisi ile ele alın
try { die "Die now"; } catch { warn "caught error: $_"; # not $@ };
Nihayet kullanılıyor.
my $y; try { die 'foo' } finally { $y = 'bar' }; try { die 'Die now' } catch { warn "Returned from die: $_" } finally { $y = 'gone' };
Çıktı:
foo C:\Users\XYZ\Text.pl satır 4'te.
Try, catch ve sonunda bu şekilde kullanabiliriz.
{ # ifadeyi } deneyin
{# ifadeyi } yakala
nihayet { # ifade };
Or
try { # statement } finally { # statement };
Çıktı:
Or
try { # statement } finally { # statement } catch { # statement };
Çıktı:
Perl Soket programlama
Soket nedir?
Soket, iki bilgisayarın ağ adresi ve bağlantı noktalarını kullanarak bir ağ üzerinde etkileşimde bulunabileceği bir ortamdır.
A (Sunucu) ve B'nin (İstemci) bazı programları çalıştırmak için Soketler kullanarak birbirleriyle etkileşime girmesi gereken iki sistem olduğunu varsayalım.
Bunu uygulamak için hem A (Sunucu) hem de B'de (İstemci) soketler oluşturmamız gerekir, A alma durumunda olacak ve B gönderme durumunda olacaktır.
Bir sunucu):
Burada sunucu B'den (Client) bağlantı alıp bazı görevleri yerine getirerek sonucu B'ye (Client) geri göndermek ister. Kodu çalıştırdığımızda A'daki işletim sistemi bir soket oluşturmaya çalışır ve bir portu o sokete bağlar. Daha sonra B olan göndereni dinleyecektir.
B (Müşteri).
Burada müşteri, bazı işlemler için kendi sisteminden A'ya (Sunucu) bir program göndermek ister. Kodu çalıştırdığımızda, B'deki işletim sistemi A (Sunucu) ile iletişim kurmak için bir soket oluşturmaya çalışır, B'nin, B'nin bağlanmak istediği A'nın IP adresini ve port numarasını belirtmesi gerekir.
Eğer bu iyi giderse, her iki sistem de tek bir port üzerinden bilgi alışverişi yapmak için etkileşime girecek. Perl ayrıca soket programlamayı da destekler.
Perl, soketlerin uygulanabileceği yerel bir API'ye sahiptir. Bunu kolaylaştırmak için, soket programları yazdığımız birçok CPAN modülü vardır.
Sunucu işlemleri:
- Soket Oluştur
- Soketi adres ve bağlantı noktasıyla bağlayın
- Bu port adresindeki soketi dinleyin
- Sunucunun bağlantı noktasını ve IP'sini kullanarak bağlanmaya çalışan istemci bağlantılarını kabul edin
- İşlemleri gerçekleştir
Müşteri Operadurumlar:
- Soket Oluştur
- Bağlantı noktası adresini kullanarak Sunucuya bağlanın
- İşlemleri gerçekleştir
soket.io
Bu, nesne yönelimli programlamaya dayanan soket programlamaya yönelik bir modüldür. Bu modül ağlarda kullanılan INET ağ tipini desteklemez.
IO::Soket::INET:
Bu modül INET alanını destekler ve IO::Sockets üzerine kurulmuştur. IO::Sockets'te bulunan tüm yöntemler INET modülünde miras alınır.
TCP protokolünü kullanan İstemci ve Sunucu:
TCP bağlantı odaklı bir protokoldür; bu protokolü soket programlama için kullanacağız.
Daha fazla ilerlemeden önce IO::Socket::INET modülü için nasıl nesne oluşturup, soket oluşturabileceğimizi görelim.
$socket = IO::Socket::INET->new(PeerPort => 45787, PeerAddr => inet_ntoa(INADDR_BROADCAST), Proto => udp,LocalAddr => 'localhost',Broadcast => 1 ) or die "Can't create socket and bind it : $@n";
IO::Socket::INET modülündeki yeni yöntem, alt programa giriş parametresi olarak bir karma değeri kabul eder. Bu karma önceden tanımlanmıştır ve kullanmak istediğimiz anahtarlara yalnızca değerleri sağlamamız gerekir. Bu karma tarafından kullanılan anahtarların bir listesi var.
EşAddr |
Uzak ana bilgisayar adresi |
PeerHost |
PeerAddr'ın eşanlamlısı |
PeerPort |
Uzak bağlantı noktası veya hizmet |
YerelAddr |
Yerel ana bilgisayar bağlama adresi |
Localhost |
LocalAddr'ın eşanlamlısı |
YerelLiman |
Yerel ana bilgisayar bağlama bağlantı noktası |
Proto |
Protokol adı (veya numarası) |
Menşei |
soket türü |
dinlemek |
Dinlemek için kuyruk boyutu |
Addr'ı Yeniden Kullan |
Bağlamadan önce SO_REUSEADDR'yi ayarlayın |
Yeniden |
Bağlamadan önce SO_REUSEADDR'yi ayarlayın |
Bağlantı Noktasını Yeniden Kullan |
Bağlamadan önce SO_REUSEPORT'u ayarlayın |
Yayın yapmak |
Bağlamadan önce SO_BROADCAST'ı ayarlayın |
Zaman Aşımı |
Çeşitli işlemler için zaman aşımı değeri |
Çok Evli |
Çok ana bilgisayarlı ana bilgisayarların tüm adreslerini deneyin |
bloke etme |
Bağlantının engelleme modunda olup olmayacağını belirleyin |
Sunucu.pl
use IO::Socket; use strict; use warnings; my $socket = new IO::Socket::INET ( LocalHost => 'localhost', LocalPort => '45655', Proto => 'tcp', Listen => 1, Reuse => 1, ); die "Could not create socket: $!n" unless $socket; print "Waiting for the client to send datan"; my $new_socket = $socket->accept(); while(<$new_socket>) { print $_; } close($socket);
Client.pl
use strict; use warnings; use IO::Socket; my $socket = new IO::Socket::INET ( PeerAddr => 'localhost', PeerPort => '45655', Proto => 'tcp', ); die "Could not create socket: $!n" unless $socket; print $socket "Hello this is socket connection!n"; close($socket);
Not:
Soket programlamada, yerel ana bilgisayar üzerinde çalışıyorsak, önce Server.pl'i, ardından client.pl'i farklı komut istemlerinde ayrı ayrı çalıştırmamız gerekecek.
Perl Modülleri ve Paketleri Nedir?
Modüller ve Paketler birbiriyle yakından ilişkilidir ve bağımsızdır. Paket: Bir Perl paketi aynı zamanda ad alanı olarak da bilinir ve karmalar, diziler, skalerler ve alt rutinler gibi kullanılan tüm benzersiz değişkenleri içerir. Modül: Modül, içine alt rutinler yazdığımız yeniden kullanılabilir kod koleksiyonudur. Bu modüller, bu modüllerde yazılan alt yordamlardan yararlanmak için Perl programlarına yüklenebilir.
Perl Modülleri Nelerdir?
Perl'ün herhangi bir sisteme kurulumu sırasında standart modüller kurulacaktır. CPAN: Kapsamlı Perl Archive Ağ – Perl modüllerinin küresel deposu. Tarafımızca yazılabilen kendi özelleştirilmiş Perl Modüllerimiz. Temel olarak, herhangi bir komut dosyasına yüklenen bir modül, tüm global değişkenlerini ve alt yordamlarını dışa aktarır. Bu alt rutinler, sanki betiğin kendisinde bildirilmiş gibi doğrudan çağrılabilir. Perl Modülleri .pm uzantısıyla Ex : Foo.pm dosya adına yazılabilir. Programın başlangıcında 'Foo paketi' kullanılarak bir modül yazılabilir.
Temel Perl modülü:
#!/usr/bin/perl package Arithmetic; sub add { my $a=$_[0]; my $b=$_[1]; return ($a+$b); } sub subtract { my $a=$_[0]; my $b=$_[1]; return ($a-$b); } 1;
Çıktı yok
Bu Perl modülünü kullanmak için onu şu anda çalışan dizine yerleştirmeliyiz.
Bir Perl modülünü require kullanarak yükleyebilir veya kodun herhangi bir yerinde kullanabiliriz. Gereksinim ve kullanım arasındaki en büyük fark, çalışma zamanı sırasında yüklü modülün gerekli olması ve derleme zamanı sırasında yüklerin kullanılmasıdır.
#!/usr/bin/perl require Arithmetic; print Arithmetic::add(5,6); print Arithmetic:: subtract (5,6);
Burada yukarıdaki örnekte, tam nitelikli modül adını kullanarak alt programlara erişiyoruz.
Pakete 'Aritmetik kullan' seçeneğini kullanarak da erişebiliriz.
İhracatçı:
Bu modülün varsayılan içe aktarma yöntemleri işlevi vardır.
#!/usr/bin/perl package Arithmetic; require Exporter; @ISA= qw(Exporter); # This is basically for implementing inheritance. @EXPORT = qw(add); @EXPORT_OK = qw(subtract); sub add { my $a=$_[0]; my $b=$_[1]; return ($a+$b); } sub subtract { my $a=$_[0]; my $b=$_[1]; return ($a-$b); } 1;
@EXPORT dizisi, varsayılan olarak Modülü çağırana aktarılacak olan değişkenlerin ve alt programların bir listesini iletmek için kullanılabilir.
@EXPORT_OK dizisi, kullanıcının modülü yüklerken belirtmesi gereken, isteğe bağlı olarak dışa aktarılacak değişkenlerin ve alt programların bir listesini iletmek için kullanılabilir.
#!/usr/bin/perl use Arithmetic qw(subtract); print add(5,6); print subtract (5,6);
Varsayılan olarak alt yordam ekleme dışa aktarılacaktır. Modül yüklenirken belirtilmediği takdirde çıkarma yöntemi dışa aktarılmayacaktır.
Perl'de Nesneye Yönelik Programlama
Bu bölümde Perl Nesne yönelimli Modüllerin nasıl oluşturulacağını öğreneceğiz. Öncelikle nesnenin ne olduğuna bakalım? Bir nesne, herhangi bir Perl modülündeki bazı verilere erişebildiğimiz, değiştirebildiğimiz ve konumlandırabildiğimiz bir örnektir. Bu, mevcut Perl paketinizin, değişkenlerinizin ve alt programlarınızın diğer Programlama Dillerine göre sınıf, nesneler ve yöntemler gibi davranmasını sağlamaktan başka bir şey değildir.
Sınıf Oluştur
Önceki konudan nasıl modül oluşturulacağını zaten biliyoruz. Sınıfın amacı yöntemleri ve değişkenleri saklamaktır. Bir Perl Modülü, yöntem olan alt programlara sahip olacaktır. Bu değişkenlere ve alt program nesnelerine erişmemiz gerekiyor.
Perl Oluşturucu
Perl'deki yapıcı, modül adının referansa etiketlendiği bir referansı çalıştırıp bize döndüren bir yöntemdir. Buna sınıfı kutsamak denir. Perl sınıfını kutsamak için özel bir değişken kullanırız, o da korusun.
#!/usr/bin/perl package Arithmetic; sub new { my $class=shift; my $self={}; bless $self, $class; return $self; } sub add { my $self= shift; my $a=$_[0]; my $b=$_[1]; return ($a+$b); } sub subtract { my $self= shift; my $a=$_[0]; my $b=$_[1]; return ($a-$b); } 1;
Bir sınıfın yapıcısı olarak kullanılan yeni yöntem, Bu yapıcı bizim için bir nesne oluşturacak ve bu yapıcıyı çağıran betiğe geri dönecektir.
#!/usr/bin/perl use Arithmetic; my $obj= Arithmetic->new(); my $result= $obj->add(5,6); print "$result"; $result = $obj->subtract(6,5); print "$result";
Burada nesnenin nasıl oluştuğunu anlamamız gerekiyor. Sınıf için bir nesne oluşturmaya çalıştığımızda sınıfın tam adını kullanmamız gerekir. Perl sınıfının lib\Math\Arithmetic.pm dosyasında bulunduğunu varsayalım. Ve eğer bu Perl sınıfına lib dizininden erişmek istiyorsak, betiği çağırırken sınıfın tam yolunu sağlamamız gerekir.
lib::Math::Aritmetik; kullanın
my $obj = lib::Math::Arithmetic->new();
Perl'de nesne yaratımı bu şekilde gerçekleşir.
@INC:
Perl betiği kütüphane modülünün nerede olduğunu nasıl biliyor? Perl yalnızca betiğin geçerli dizinini ve Perl'ün dahili kütüphane yolunu bilir. Geçerli dizinde veya Perl kitaplığı Yolunda bulunmayan Perl modülünü kullandığımızda, komut dosyası her zaman başarısız olur. @INC hakkında bu, Perl modüllerini araması gereken tüm dizin yollarını tutan bir dizidir. Bu komutu çalıştırmayı deneyin ve çıktının ne olacağını görün.
perl –e "print @INC"
Bu bir miktar çıktı verecektir ve bu, lib Modüllerinin mevcut olacağı yoldur. Ne zaman yeni bir kütüphane modülü kullansak, yorumlayıcı Perl'e Perl modülünün mevcut olduğu konuma bakmasını söylememiz gerekir.
push(@INC, "PATH TO YOUR MODULE");
Bunu ilk kod satırınız olarak yapın. Bu, tercümanınıza o Yola bakmasını söyleyecektir. veya kullanım
lib Arithmetic; # List here is your Perl Module location
Perl Yıkıcı
Bir nesnenin yıkıcısı varsayılan olarak sonunda ve betiğinizden çıkmadan önce çağrılır. Bu, nesnelerinizi hafızadan yok etmek için kullanılır.
PERL V/s Kabuk Komut Dosyası
- Perl'de programlama, kabuk komut dosyası oluşturmada farklı kabuklar kullanıldığında yaygın olan taşınabilirlik sorunlarına neden olmaz.
- Perl'de hata yönetimi çok kolaydır
- Perl'ün genişliği nedeniyle uzun ve karmaşık programları kolaylıkla yazabilirsiniz. Bu, ad alanlarını, modülleri, nesneyi, mirası vb. desteklemeyen Shell'in tersidir.
- Shell'de daha az sayıda yeniden kullanılabilir kitaplık bulunmaktadır. Perl'ün CPAN'ına kıyasla hiçbir şey yok
- Shell daha az güvenlidir. Harici işlevleri çağırır (mv, cp vb. gibi komutlar kullanılan kabuğa bağlıdır). Aksine Perl dahili fonksiyonları kullanırken faydalı işler yapar.
Otomasyon Testinde PERL nasıl kullanılır?
Perl otomasyonda yaygın olarak kullanılmaktadır. Dünyadaki en iyi programlama dilleri olmayabilir ancak belirli türdeki görevlere en uygun olanıdır. Perl'ün nerede ve neden kullanıldığını tartışalım Otomasyon Testi.
Depolama Testi
Depolama Nedir? Dosyalar'da saklanan veriler.
Diyelim ki Depolama ile ilgili bir şeyimiz var Test Durumu bir bölüme veri yazmamız, onu okumamız ve verilerin doğru yazıldığını doğrulamamız gerekiyor.
Bu manuel olarak yapılabilir, ancak manuel bir test cihazı aynı işlemi 10000 kez gerçekleştirebilir mi? Bu bir kabus olacak! Otomasyona ihtiyacımız var
Depolamayla ilgili her şeyi otomatikleştirmek için en iyi araç, Dosya İşleme Teknikleri nedeniyle Perl'dür. REGEX ve diğer programlama dillerine kıyasla en az yürütme süresi harcayan güçlü dosya ayrıştırma.
Depolamayı neden test etmemiz gerekiyor? Saniyede 1000'lerce kaydın depolandığı, verilerin bir sistemden diğer sisteme sürekli olarak akacağı büyük Veri Merkezlerini düşünün. Bu tür bir depolama mekanizmasının sağlamlığının test edilmesi önemlidir.
HP, Dell gibi birçok şirket, IBM ve birçok sunucu üreticisi Perl'i Depolama ve Ağ etki alanlarındaki işlevselliği test etmek için bir arayüz olarak kullanır. NetApp, tamamen Depolama üzerinde çalışan ve test senaryolarını otomatikleştirmek için Programlama dili olarak Perl'i kullanan böyle bir şirkettir.
Perl Otomasyonuyla ilgileniyorsanız, Depolama ve Ağ İletişimi hakkında bilgi edinmeniz tavsiye edilir. Concepts.
Sunucu ve Ağ Testi:
Perl kullanarak Sunucu ve Ağ Testi
PERL, sunucu çalışma süresi ve performans izlemede yaygın olarak kullanılmaktadır.
100 ana bilgisayara (sunucuya) sahip bir veri merkezi düşünün. Her bir ana bilgisayara bağlanmanız, bazı komutları uzaktan yürütmeniz gerekir. Ayrıca sistemi yeniden başlatmak ve ne zaman tekrar çevrimiçi olacağını kontrol etmek istiyorsunuz.
Bu görevi 100 ana bilgisayarın tümü için manuel olarak yapmak bir kabus olacaktır. Ancak bunu PERL kullanarak kolayca otomatikleştirebiliriz
PERL kullanarak otomasyonun ötesinde bunu başarmak için adımlar tasarlayın
- (IP, Kullanıcı Adı ve Şifre) gibi ana bilgisayar bilgileri hakkında dosyadan giriş alın.
- Her sisteme bağlanmak ve komutları yürütmek için bir kanal oluşturmak için Net::SSH2'yi kullanın.
- Gerekli komut dizisini yürütün; örneğin: ls, dir, ifconfig,ps vb.
- Sistemi yeniden başlatın.
- Sistemin açılması için 10 dakika bekleyin.
- Net::Ping modülünü kullanarak sisteme ping atın ve durumu yazdırın.
Yukarıdaki senaryoyu kodlayacağız.
Bağlanmamız ve komutu yürütmemiz gereken tüm ana bilgisayarlar hakkındaki tüm bilgileri saklayacak olan, Output.txt adlı bir dosyayı alalım.
Giriş.txt
192.168.1.2 kök şifresi
192.168.1.3 kök şifresi
192.168.1.4 kök kök123
HostCheck.pl
use Net::SSH2; use Net::Ping; use strict; use warnings; my $ping = Net::Ping->new(); # Creating object for Net::Ping my $SSHObj = Net::SSH2->new(); #Creating object for Net::SSH2 open( FH, "Input.txt" ); # Opening file and placing content to FH my @hosts = <FH>; my $ip; my @ips; foreach (@hosts) { if ( $_ =~ /(.*)\s+(\w+)\s+(.*)/ ) #Regex to get each info from file { $ip = $1; my $user = $2; my $password = $3; $SSHObj->connect($ip); print "Connecting to host -- $ip --Uname:$user --Password:$password\n"; my $status = $SSHObj->auth_password( $user, $password ); print "$status\n"; die("unable to establish connection to -- $ip") unless ($status); my $shell = $SSHObj->channel(); print "$_\n" while <$shell>; $shell->blocking(1); $shell->pty('tty'); $shell->shell(); sleep(5); #Executing the list of command on particular host. Can be any command print $shell "ls \n"; print "$_\n" while <$shell>; print $shell "ps \n"; print "$_\n" while <$shell>; print $shell "dir \n"; print "$_\n" while <$shell>; print $shell "init 6\n"; #rebooting the system push( @ips, $ip ); } } sleep 600; foreach (@ips) { if ( $ping->ping($_) ) { print "$_ is alive.\n" if $ping->ping($_); } else { print "$_ is not still up --waiting for it to come up\n"; } }
Web Testi
Perl yalnızca Depolama ve Ağ testiyle sınırlı değildir. PERL'i kullanarak Web tabanlı testler de yapabiliriz. WWW-Mekanizasyon için kullanılan bir modüldür web testi. Temel olarak, web uygulamasının işlevselliğini test etmek için herhangi bir tarayıcı başlatmaz, bunun yerine html sayfalarının kaynak kodunu kullanır.
Ayrıca tarayıcı tabanlı testler de gerçekleştirebiliriz. Selenium IDE, RC, Web sürücüsü. Perl şunun için desteklenir: Selenium.
\N"; #this, pıtırtı eşleşmesi tamamlandıktan sonra kalan dizeyi tutacak.
Yazdır "