İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır

KOMUT SATIRI SEÇENEKLERİ

Bir perl programına seçenek geçirmenin iki yolu vardır.

KOMUT SATIRINDAN SEÇENEK GİRME

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

PROGRAMDA SEÇENEK TANIMLAMA

#!/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.

# define bulunan bir perl program örneği :

Ç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 Kullanarak Diğer Dosyaları Alma :

#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

Dosya Listesi

İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdır