|
|
Bir perl programına seçenek geçirmenin iki yolu vardır.
Syntax : Perl seçenek program adı
Örnek :
$ perl -s -w test1 c
komutu ile test1 programı –s ve –w seçeneklerini alır ve çalışır. Bazı seçeneklerde değer alabilir. Örnek :
$ perl -0 26 test1 integer
Aradaki boşluğu (seçeneklerde) kaldırarak da aynı iş yapılır.
$ perl -026 test1 ...gibi
$ perl -sw test1 ...gibi $ perl -sw026 test1 ...gibi
#!/usr/bin/perl -w # perl4 te tek seçeneğe izin var. Perl5 serbest # ama bazı sistemler 32 karakterden fazlasını almıyor.
Komut satırında perl -s test1 ¿ girmişsek programın ilk satırı ise
#!usr/bin/perl -w
ise Program çalışırken sadece -s seçeneği ile çalışır. -w dikkate alınmaz.
SEÇENEKLER
-v : Perl'in versiyonunu verir.
$ perl -v test1 ¿
-c : syntax'ı kontrol eder.
$ perl -c test1 ¿
Program çalıştığında test1 syntax ok mesajı verir, hata varsa bildirir.
-w : Yazım ikazı, program yazımında syntax değilde yazım kullanımı konusunda hata varsa kontrol eder. Mesela yanlış değişken adı veya = = yerine eq kullanılması gibi. Örneğin ; $y=$x; satırına geldik diyelim eğer $x tanımsız ise Identifier main::x ..... şeklinde mesaj verir.(Bunlarla ilgili geniş bilgiyi sonraki bölümlerde inceleyeceğiz.)
-w ile -c kullanımı hem syntax hem kullanım hatasının tespiti için yararlıdır.
-e : Tek satır programı icrası (bir satırda birden fazla da kullanılabilir). Örneğin ;
perl -e "print('Hello');" -e "print('there');" ¿
Ekrana : Hello there yazar.
-s : Kendi komut satır seçeneklerinizi tedarik eder. Perl -s test1 -q ¿ program test1'i başlatır ve -q seçeneğini ona geçirir. Eğer -s yazmasaydık -q seçeneği programa geçmezdi. Seçenek tek karakterden fazla olabilir. $sebze değişkenini kullanacaksak
perl -s test1 -sebze ¿
gireriz. $sebze'nin değeri 1'dir. (perl otomatikman 1 verir.) veya başka bir değer atama işi şu şekilde yapılabilir.
perl -s test1 -sebze="nar" ¿
$ ebze içeriği "nar" olur.
-P option : C preprocessor kullanma seçeneğidir.
Perl -P örnekprog ¿ bu komutla örnekprog , C önişlemcisinden den alınır sonra icra için perl'e geçer. C önişlemcisi bize C deki bazı ifadelerini kullanma izni verir. # ile başlarlar.Örnek ;
# define USER "ertan" # define EXPRES (14+6)
define tanımlı makroya değer geçirir.
Çalışması :
Bir Internet adresi giriniz: 194.27.16.7 Tam adı: sirius.gazi.edu.tr Diger adları : sir sirius
Define ile ilgili bir başka kullanım :
#define FIRST 1 #define SECOND FIRST $result = 43 + SECOND; ( yani 43+1)
#include dosyaadı
include bir başka C önişlemci komutu olup, tanımlı program parçasını dosya içeriğinine dahil etme işlevi görür. Örnek ; myincfile.h dosyasını dahil etmek için
#include " incdosyam.h"
(bu dosya local dizin'de aranır. diğer dizinlerde de aratmak icin -I opsiyonu kullanılır). Verilen patern’de arama için,örneğin;
#include "/u/pub/incdosyam.h"
şeklinde kodlanır.
-I : bu seçenek C include dosyalarını aratır.-P ile birlikte kullanıldığında bu dosyaları hangi dizinde aranacağı belirtilmiş olur.
perl -P -I /u/home/incdizin dosya
birden fazla dizinde aratmak için;
perl -P -I /u/home/incdizin -I //u/home/incdizin2 dosya
-I ile verilen dizinler @INC içinde saklanır.
-n : Çoklu dosyalarla işlem seçeneğidir. Birden fazla giris (dosya/satır)okuması yapar.
Unix'te birçok dosya ile işlem mesela komut satırından yapılabilir. (örneğin;Cat dosya1 dosya2 dosya3 komutu dosya1, dosya2, dosya3 dosyalarını okur ve ekrana basar v.b) Perl’de aynı işi <> operatörü ve döngü yardımıyla yapabiliriz.
while ($line = <>) { ---- ---- satırlar ---- }
Bir başka metot da –n kullanımı ile gerçekleştirilir. Bu seçenek, komut satırından birden fazla girdi alır. Konuya ilişkin bir örnek görelim : Bu örnek girilen satırın iki yanına * koyar. Örnek ;
Göster Gizle Kopar Satır Gizle Satır Göster |
#!/usr/bin/perl -n # giriş satırı sistem değişkeni olan $_içinde depolanacaktır. $line = $_; chop ($line); printf ("* %-52s *\n", $line);
Çalışması ;
-n seçeneği bu programı görünmez bir while döngüsüyle kapatmıştır. Komut satırından girilen değerler $_ içine depolanır. -n ile -e birlikte kullanişlıdır. Örneğin aşağıdaki komut cat komutuna eşittir.
$ perl -n -e "print $_;" dosya1 dosya2 dosya3
veya daha basit olarak perl -n -e "print" dosya1 dosya2 dosya3 her üç dosya içeriği alt alta ekrana listelenir. $_ değişkeni default değişkendir. Hatta pattern örneklerde ve yerine koymalarda operatörler $_ üzerinden default işlem yaparlar. Örnek ;
$ perl -n -e "print if /[0-9]/" dosya1 dosya2 dosya3 ¿
dosya1, dosya2 ,dosya3 'ü tarar rakam içeren girişleri (satırları) listeler.
-p : Bu seçenekte -n -e benzer farklı olarak okunan satırları basar.
$ perl -p -e ";" dosya1 dosya2 dosya3 ¿
osya1, dosya2, dosya3 içerikleri okunur ve alt alta ekrana basılır. (yukardaki örnek unix'teki Cat dosya1 dosya2 dosya3 komutuyla aynıdır.) -p seçeneği -i ile de çok kullanılır.
-p ve -n birlikte kullanılırsa, -n dikkate alınmaz.
-i : Dosya yazma (editing)seçeneğidir
Görüldüğü üzere -p ve -n seçenekleri komut satırında tanımlı dosyaları okuyordu. -i seçeneği, -p ile kullanıldığında, dosyadan okuduğunu tekrar oraya yazma amacıyla kullanım işlevini sağlar (unix'deki sed gibi dosyayı edit etme işlevi).
$ perl -p -i -e "s/fgh/xwz/g;" dosya1 dosya2 dosya3
komutu ile dosyalardaki fgh yerine xwz konulur.
-a : Satırı kelimelere ayırarak listeye (dizi)dönüştürme seçeneğidir. Bu seçenek -n veya -p ile kullanılır ve satırı otomatikman kelimelere ayırır (white space karakteri olmayan). Bu kelimeler @F sistem dizi değişkeninde saklanırlar. -a seçeneği satırda istenenleri çekip çıkarmada çok yararlıdır. Örneğin programa girişi yapılan satır Bu bir deneme kaydıdır ise @F sistem dizi değişkeninin içeriği şu şekildedir:
("Bu", "bir", "deneme", "kaydıdır")
Mesela; Okunacak dosya adı datadosya ve kayıt formu şöyle olsun.
Ad No Toplam
girilmiş kayıtlar ise,
Bertan TURK 103 474.32 ertan NAR 10 57.32 nur TABAK 1023 4700.32
-n ve -a kullanılarak dosyadan No ve Toplam alanlarını cekip çıkaran ve yazdıran bir program örneği;
Göster Gizle Kopar Satır Gizle Satır Göster |
#!/usr/local/bin/perl while ($F[0] =~ /[^\d.]/) { shift (@F); next if (!defined($F[0])); } print ("$F[0] $F[1]\n");
bu programın adı prog.pl olsun
/usr/local/bin/perl -a -n prog.pl datadosya ¿ 103 474.32 10 57.32 1023 4700.32
-F : (split) ayırma patterni tanımlama seçeneğidir. Kelimeleri ayırırken ayraç karakteri de koyar. -a ile birlikte kullanım için dizayn edilmiştir. Önceki programı aşağıdaki gibi çağrılmış olsun;
/usr/local/bin/perl -a -n -F:: prog.pl datadosya ¿
Bu durumda dosya okunurken kelime aralarına : : yerleştirilir.
Bertan TURK:: 103::474.32 gibi...
Normal split'de :: işaretleri // içine alınırdı. Burada bu karakterler olsada olur olmasada yani /::/ ile :: aynıdır.
-0 : (O harfi değil, Sıfır'dır)Satır sonu girişini tanımlayan seçenektir. Şu ana kadar giriş satırlarını dosyadan veya klavyeden okuyorduk sonunda \n karakteri vardı. Biz istersek sondaki bu karakteri -0 seçeneği ile kendimiz belirliyebiliriz. Bu ASCII (8 tabanlı - octal) olarak belirlenebilir. Örneğin ; Boşluk karakterinin octal değeri 040 dır.
Perl -0 040 prog.pl okunandosya ¿
Komuyuyla prog.pl programı çağrılır onun okuma yaptığı okunandosya’nın satır sonu karakteri olarak boşluk karakteri kullanılması sağlanır. Konuyu iyice anlamak için diyelim ki data.txt dosyamız var ve içeriği de şöyle: (tabiiki satır sonlarında \n -satır sonu- karakteri var)
Bu ilk satır ikinci satır ucuncu satır
Perl programımızın adı prog.pl ve içeriği de aşağıdaki kodlama olsun.
Göster Gizle Kopar Satır Gizle Satır Göster |
#!/usr/local/bin/perl -0040 while ($line = <>) { $line =~ s/\n//g; next if ($line eq ""); print ("$line\n"); }
Calıştırdığımızda ekran dökümü aşağıdaki gibi olacaktır.
$ prog.pl data.txt ¿ Bu ilk satırikinci satırucuncu satır $
- l (küçük -le- harfi) :Satır sonu çıktısı tanımlama seçeneğidir. Bu seçenek size belirlenen satır sonu karakterinin print fonksiyonu ile basılmasını sağlar. 0 gibi -l de octal değerle kullanılır(ASCII karakterin değeridir). Bu opsiyon tanımlanınca perl 2 şey yapar.
Örnek Program ; Bu program kelimeler arasına ascii kodu 197 .(Octal değeri 305 dir) olan karakteri basar. Program adı program.pl olsun.
Göster Gizle Kopar Satır Gizle Satır Göster |
#!/usr/bin/perl -l305 print ("Merhaba"); print ("Bu ikinci kelime"); print ("Bu da 3. kelime");
Çalışması : program.pl
Merhaba Bu ikinci kelime Bu da 3. kelime
-x : Bir mesajdan bir program çekip alma seçeneğidir. Örneğin bir file içeren elektronik mail mesajından programı almak gibi. -x opsiyonu tanımlıysa perl tüm satırları görmezlikten gelir taki başlık satırını görene kadar. Bunu anlaması, başta #! Karakterlerlerini görmesiyle olur. Eğer perl5 kullanıyorsak başlık satırı ayrıca perl kelimesini içermelidir. #! ve "perl" görülünce , aşağıdaki 3 şarttan biri gerçekleşinceye kadar proses devam eder.
Örnek Program ;Bir program içinde perl program çalıştıran örnek. Program adı program.pl olsun.Komut satırından -x seçeneğiyle çalıştırılacak Aşağıdaki satırların tamamı program.pl satırlarının kodlarıdır
Göster Gizle Kopar Satır Gizle Satır Göster |
--------------------------------------------------------------------- Bu program bir program içinde perl programi içerir program başlik açiklamasina kadarki satirlari dikkate almaz #!/usr/local/bin/perl print("Merhaba, Ben bir perl programiyim!\n"); __END__
yukardaki satır program sonunu ifade eder. bu satir da dikkate alinmaz..
--------------------------------------------------------------------
Çalışması :
$ /usr/bin/perl -x program.pl Merhaba, Ben bir perl programiyim!
Diğer Seçenekler
|
|