GiRİŞ Perl Komutları Nasıl Yazılır?



Yüklə 0,83 Mb.
səhifə1/7
tarix02.11.2017
ölçüsü0,83 Mb.
#26951
növüYazı
  1   2   3   4   5   6   7

GİRİŞ

Perl Komutları Nasıl Yazılır?

Beğendiğiniz bir editörle yazabilirsiniz. İlk satırda perl'un icra edilebilir dosyasının sistemdeki tam yolu verilir. Satırın başına( #! ) özel karakterleri mutlaka yazılmalıdır.

#!/usr/bin/perl gibi...

Kodlama bittikten sonra editörden çıkılır ve Unix ve benzeri sistemlerde o dosyaya icra hakkı vermeniz gerekir. Varsayalım ki program adı deneme.pl olsun

chmod +x deneme.pl

komutu bu işlemi yerine getirir.



Program Nasıl Çalışır?

Komut satırından program adını girip Enter tuşuna basınız.

Örnek program :

#!/usr/local/bin/perl


$girilensatir = ;
print($girilensatir);

Bu programın ilk satırında programın icrası için gereken dosyanın yeri belirtilmiştir. İkinci satırda klavyeden girilen değer $girilensatir değişkenine aktarılır. (Burada klavyeden merhaba yazalım). Üçüncü satırda ise bu değer ekrana yazdırılır.

Ekrandaki görüntü şu şekildedir:

> deneme.pl

> merhaba

> merhaba

Açıklama satırları nasıl belirtilir. Açıklama yapmak amacıyla kullanacağımız satırların başına # işareti koyarız.

# bu bir açıklama satırıdır

# perl tarafından dikkate alınmaz

Bu durumda önceki programımızı şu şekilde kodlayalım

#!/usr/local/bin/perl
#Bu program klavyeden girileni
#ekrana yazar.
$girilensatir = ;
print($girilensatir);

Programın çalışması bir önceki ile tamamen aynıdır. # ile başlayan satırlar sadece bizi aydınlatmak, not tutmak içindir. Perl bu satırları değerlendirmeden geçer.

Şimdi şu satırı ele alalım;

$girilensatir = ;

Bu satir bir perl ifadesidir(statement) her bir parçasına($girilensatir,=,,;) ise gösterge (token) denir. $girilensatir bir skalar değişkeni belirtir. $ isareti değişkenin skalar olduğunu girilensatir ise değişkenin adını belirler. = göstergesi kendisinin (bize göre) sağındaki ifadeyi solundakine ata anlamı taşır. standart giriş elemanını yani klavyeden girişi ifade eder. Son olarak ; göstergesi ise ifadenin bitişini gösterir ve ifade sonlarında mutlaka bulunmalıdır aksi takdirde hata mesajı alırsınız.

Yukarıdaki açıklamalar tüm perl benzer ifadelerinde geçerlidir. Yazım sırasında istisnai durumlar dışında karakter aralarında boşluk, tab v.b whitespaces karakterleri kullanılabilir.Aralardaki boşluk sayısı önemli değildir.



Gelelim yazdırmaya;

Standart çıktı(ekran)ya yazdırma görevini print yapar. print($girilensatir); ifadesiyle $girilensatir skalar değiskeninin içeriği ekrana yazdırılır. Aslında print fonksiyon olarak çalışır. $girilensatir 'ı ise arguman olarak kullanır. Arguman 1 den fazlada olabilir. Print ($girilensatir, $girilensatir); ifadesinde 2 arguman kullanılmıştır. Her ikisi de klavye girişini alan $girilensatir değişkenidir. Bu durumda busatırın çalışması anında $girilensatir değeri, ekrana 2 defa yazdırılır.



SABİT VE DEĞİŞKENLER

1.Sabitler

A)Sayısal Sabitler:

Sayısal sabitler,programın çalışması esnasında gereken sayısal sabit değerlerdir. Perl 8 ve 16 tabanlı sayısal değerlerin kullanımını da sağlar

1245

100.45


.000034

043


0x23 ...gibi

B)String Sabitler:

String sabitler,programın çalışması esnasında gereken alfasayısal sabit değerlerdir. Alfabetik ve Alfabetik/sayısal/özelkarakter karışımı olabilirler. Tırnak içindeki ifadelerdir. Perl stringlerde; Tek, çift, geri tırnak kullanır. Bunlar birlikte de kullanılabilirler. Kurallarını göreceğiz.

'Ertan Türkmen'

"Ertan Türkmen"

"Dedi ki, \"O Ankara'dan geldi.\""

'Ahmet Trabzon\'ludur' ...gibi

stringlerde EscapeSequence denilen özel işlevli karakterlerde kullanılır.

Escape SequeNCe karakterlerinden bazıları ve anlamları:



\a

Alarm

\b

Backspace -geri-

\e

Escape -çıkış-

\f

Form Feed -form besleme -

\n

Newline -yeni satır-

\r

Carriage return -satır sonu-

\t

Tab - x karakter atla -

\v

Vertical Tab - dikey atla -

ilerleyen derslerde konuyla ilgili örnekler görecek ve daha iyi anlayacağız.

2.Değişkenler

a)Skalar değişkenler : İçersinde değişebilen değerler bulunduran birimlerdir. İlk karakteri $ işaretidir.Bu karakterden sonra en az 1 alfabetik karakter bulunmalıdır. Değişken adında kural olarak bu karakterlerden hemen sonra alfabetik, sayısal karakterler ve _ karakteri kullanılabilir. Değişken uzunluğu serbesttir.

$ad, $ad_soyad, $a1

gibi değişken adlari geçerli olup aşağıdakiler geçersizdir.

ad

# $ karakteri olmadığından

$

# $ dan sonra en az 1 alfabetik karakter gerektiğinden

$47x

2.karakter sayısal olamaz

$_ad

# 2.karakter alfabetik olmalı

$ad!

# ! karakteri kullanılamaz

Küçük ve büyük harf kullanımı önemlidir ve farklı değişkenleri temsil ederler. Bu demektir ki; $AD ile $Ad ve $ad farklı değişkenlerdir.

Değişkenlere değer atama:

Eşitliğin bize göre sağındaki değer (sayısal/alfabetik/karışık olabilir) solundaki değişkenin içine konur. Aşağıdaki ifadeyi inceleyiniz.

$ADI_SOYADI = "Ertan TURKMEN";

$ADI_SOYADI değişkeni içindeki değer "Ertan TURKMEN" dir.

benzer şekilde,

$MAAS = 125000;

$MAAS değişkeni içeriği 125000 dir

Değişkenin içinde önceden bir değer varsa,önceki değer silinir, son atanan değer geçerli olur.



Aritmetik Operatörler:

Perl de kullanılan TEMEL aritmetik operatörler;



Toplama

+

Çıkartma

-

Çarpma

*

Bölme

/

Örnek program : Verilen değerin Km ve Mil cinsinden çevirimini yapar.

#!/usr/local/bin/perl


print ("Mesafeyi giriniz: \n");
$mesafe = ;
chop ($mesafe);
# chop fonksiyonu giriş sonundaki karakteri atar

# programımızda son karakter Enter tuşuna bastığımız için

# yeni satır (\n) karakteri

# olduğundan onu atar(siler).


$mil = $mesafe * 0.6214;
$km = $mesafe * 1.609;
print ($mesafe, " km = ", $mil, " mil\n");
print ($mesafe, " mil = ", $km, " km\n");

Program satırlarında kullanılan "\n" göstergesi alt satıra geçişi sağlayan yeni satır karakteridir.

Çalışması:

milkm


>Mesafeyi giriniz:

>10


>10 km = 6.2139999999999995 mil

>10 mil = 16.09 km



a.1)Tamsayi (integer) Skalar değişkenler:

İçerisinde tamsayı sabit ve literal bulundurabilirler. integerlar kayar noktalı (floating-point--birazdan inceleyeceğiz--)değerler gibi işlem görürler.

Örnek program: adı prg.pl olsun...

#!/usr/local/bin/perl


$deger = 1234567890;
print ("1.değer: ", $deger, "\n");
$deger = 1234567890123456;
print ("2.değer: ", $deger, "\n");
$deger = 12345678901234567890;
print ("3.değer: ", $deger, "\n");

Çalışması :

>prg

>1.değer: 1234567890



>2.değer: 1234567890123456

>3.değer: 12345678901234567168

çıktısı verir. Görüldüğü gibi ilk 2 değerde sorun yoktur.3.değer yanlış sonuç üretir. Çünkü tamsayı için fazla değer içermektedir.

a.1)Kayar Noktalı (floating-point) Skalar değişkenler:

En fazla 16 rakam kabul edebilirler. Bu değişkenler tamsayı, ondalıklı, exponent(e üzeri) ve -/+ işaretli değerleri saklayabilirler. Örneğin, aşağıdaki değerlerle işlem yapabilirler.

11.4 , -275 , -0.3 , .3 , 3. , 5.47e+03 , ...v.b.

Örnek program : Adı prgsk1.pl olsun,

#!/usr/local/bin/perl
$deger = 34.0;
print ("1. deger ", $deger, "\n");
$deger = 114.6e-01;
print ("2. deger ", $deger, "\n");
$deger = 178.263e+19;
print ("3. deger ", $deger, "\n");
$deger = 123456789000000000000000000000;
print ("4. deger ", $deger, "\n");
$deger = 1.23e+999;
print ("5. deger ", $deger, "\n");
$deger = 1.23e-999;
print ("6. deger ", $deger, "\n");

Programın Çalışması :

> prgsk1.pl
> 1. deger 34
> 2. deger 11.460000000000001
> 3. deger 1.7826300000000001e+21
> 4. deger 1.2345678899999999e+29
> 5. deger Infinity
> 6. deger 0

b)String değişkenler:

String (karakter/karakterler içeren dizi) içerirler. Bu değerler alfabetik ve sayısal sabit veya değişken olabilirler.

$AD_SOYAD = "Ertan TURKMEN";

komutuyla "Ertan TURKMEN" stringi $AD_SOYAD string değişkenine atanır.

$number = 11;

$text = "Bu text sayı içerir.İçerdiği sayı $number.";

komutlarının icrası sonucu $number'a 11 sayısı atanır. $text değişkenine ise "Bu text sayı içerir. İçerdiği sayı $number." Stringi atanır. Sonuçta $text'in içeriği şudur.

"Bu text sayı içerir.İçerdiği sayı 11."

Stringlerde de Escape Sequence karakterler kullanılır.

Bunlar aşağıdadır:



\a

Zil sesi

\b

Backspace

\cn

Ctrl+n karakteri

\e

Escape

\E

L, \U or \Q etkisini sonlandır

\f

Form Feed -

\I

Sonraki harfi küçüğe çevirir

\L

Sonraki tüm harfleri küçüğe çevirir

\n

Newline -yeni satır-

\r

Carriage return

\Q

Özel örnek karakterleri arama

\t

Tab

\u

Sonraki harfi büyüğe çevir

\U

Sonraki tüm harfleri büyüğe çevir

\v

Vertical Tab - dikey atla -

Tek ve Çift tırnaklı string farkı:

Bunu örnekle inceleyelim.

$string = "Bir stringdir";
$text = "Bu $string";
# $text'in içeriği "Bu Bir stringdir"

Örnek 2:

$text = 'Bu bir $string';
#$text'in içeriği 'Bu bir $string'

İki örnek arasında fark açıkça görülmektedir. Tek tırnak içindeki string aynen saklanır. Değişken ve hatta \n gibi karakterlerde kendi özelliklerini icra eder şekilde kullanılamaz. (sadece \ ve ' karakterleri hariç). Örnek 3:

$text = 'Bu string.\n';
$text içeriği:
Bu string .\n şeklindedir.

Örnek 4:

$text = 'Burada \', tek tırnak karakteri var';
$text içeriği: Burada ', tek tırnak karakteri var

Örnek 5:

$text = 'Stringin son karakteri backslash \\';
$text içeriği:
Stringin son karakteri backslash \ şeklindedir.

String ve Sayısal değerlerde değiştirilebilirlik:

Örnekle inceleyelim.

$string = "43";


$Sayı = 28;
$result = $string + $Sayı;
$result içeriği 71 dir.

Bir de şu örneği inceleyelim:

number = #klavyeden giriş bekler 22 girdik diyelim

# $number içeriği 22\n dir (\n enter tusu)

chop ($number); # $number içeriği su anda 22
$result = $number + 1; #$result içeriği 23

Şöyle bir atama sonucunda ise :

$result = "hello" * 5;
$result içeriği 0 dır.

çünkü hello sayısal olmadığı için sayısal değeri 0 dır

Eğer string ifadede sayısal ve alfabetik değer varsa, $result = "12o34"; gibi.. Bu durumda ortadaki o harfi öncesi geçerlidir. $result içeriği 12'dir.

ALTERNATİF STRİNG AYRAÇLARI

Aşağıdaki örneğe bakalım;

$say = 5;
print ("$say\n"); # 5 basar
print ('$say\n'); # $var\n basar

örnekte ' ve " ayraçlarını görüyoruz. Perl başka ayraç elemanları da sunar. Bu işlev için, q kullanıp sonraki ayraç elemanını belirleyebiliriz.

q!merhaba $kim! gibi...

bu ifade ile aşağıdaki ifade aynıdır.

'merhaba $kim'

String sınırlayıcı olarak qq kullanırız.

qq/This string contains $var./

Burada / karakteri stringi ayırır(sınırlar).

Stringi kelimelere ayırma-kesme- işlevini qw ile yaparız. Aşağıdaki iki satır aynıdır.

@kelimeler = qw/Bu bir cümledir/;


@kelimeler = split(' ', q/Bu bir cümledir/);

her iki durumda da @kelimeler ' e şu liste atanır;

("Bu ", " bir ", " cümledir")

<< KULLANARAK STRİNG TANIMLAMA

<< işareti ile string başı tanımlanır. Bu string boş satır görene kadar devam eder.

$A = <<


here is the string

bu ikinci satır } $A içeriği yandaki ilk iki satırdır.

üçüncü satır

dördüncü satır



<< sonra konacak string, string sonunu belirler.

str = <
bu birinci satır
bu ikinci satır
END (string sonu)

Şu da doğrudur.

$end = "END";
$str = <<"$end"
bu ilk satır
bu ikinci satır
END

Şu kullanıma bakın;

print <Merhaba!
Iyi calışmalar!
END

çıktısı

Merhaba!
Iyi calışmalar!
print <Merhaba!
END

çıktısı

Merhaba!
Merhaba!
$satır = <birinci kısım
END1
ikinci kısım
END2

$satır içeriği

Birinci kısım
İkinci kısım

Not: \n dahildir.



<< aralarında boşluk olmamalıdır.
OPERATÖRLER

Aritmetik Operatörler:

Daha evvel temel operatörleri görmüştük. (Toplama:+, Çıkarma:-, Çarpma:*, Bölme:/) Şimdi ise üs alma ,mod (artık) ve unary operatörlerini görelim.

Üs alma için ** ,mod için % ,unary negation için - operatörü kullanılır.

Örnek:


$x = 2 ** 4 # 2x2x2x2 anlamındadır ..sonuçta $x içeriği 16 dır.
$y = 2 ** 2 # $y içine 4 atanır.
$x = 2 ** $y; # $x içine 2**4 yani 16 atanır.

Örnek program : Program Adı usprg.pl olsun

#!/usr/local/bin/perl
#program 2 rakamının girdiginiz deger olarak üssünü bulur
print ("Kullanacaginiz üs degerini giriniz:\n");
$us = ;
chop ($us);
print ("2 nin $us .üssü = ", 2 ** $us, "\n");

Çalışması :

>usprg.pl
>Kullanacaginiz üs degerini giriniz:
>16
>2 nin 16 .üssü = ", 65536

>

Negatif ve noktalı sayı kullanmak hataya sebep olur



Yine sınırları aşan sayılar da hataya neden olur

10 ** 999999 ..gibi



MOD (Artık) Operatörü:

$x = 25 % 4;

Bu örnekte 25,4'e bölünür kalan(artık) 1’dir. Dolayısıyla $x 'in değeri 1’dir. İnteger olmayanlar integer'a(Tamsayı) dönüştürülür

$x = 24.77 % 4.21;

Bu örnekte 24, 4'e bölünür kalan olmadığından $x değeri 0 dır.

MOD işlemlerinde % işaretinin sağında 0 olamaz çünkü sıfıra bölme imkansızdır. Bu tür işlemler hata mesajı verir.

$x = 25 % 0;

$x = 25 % 0.1;



Unary negation operatörü:

- operatörü

Değeri -1 ile çarpmaktır.

- işareti bu operatör ile kullanımında eksi işareti anlamında değildir.

- 5; # tamsayı -5' e esittir
- $y; # $y * -1 anlamındadır.

Ayrıca -operant (azaltma),+operant (arttırma), kullanım öncesi arttırma ++operand, kullanım öncesi eksiltme –operand kullanım sonrası arttırma operand++, kullanım sonrası elsiltme operand--, operatörleri de kullanılır.

# Normal yol:
$Sayfano = 5;
$Sayfano = $Sayfano + 1;
print($Sayfano, "\n");

program çıktısı : 6

#Önceden arttırmalı yol:

$Sayfano = 5;


print(++$Sayfano, "\n");

program çıktısı : 6

Önceden eksiltmeli opr kullanımı.

$sayi = 5;


$toplam = --$sayi + 5;
print("$sayi $toplam \n");

Çıktı : 4 9

sonradan arttırmalı opr kullanımı.

$sayi = 5;


$toplam = $sayi++;
print("$sayi $toplam \n");

Çıktı : 6 5



KIYAS OPERATÖRLERİ KULLANIMI:

$x = $a == $b;

Yukarıdaki satırda $x in değeri, $a ve $b daki değerlerin durumuna bağlıdır.

Şöyleki: eğer $a,$b ye eşitse, $a == $b eşitliği sonucu doğru değerini taşır(true) ve $x in değeri 0 OLMAZ. Sıfır olmayan değer taşır.eğer $a,$b ye eşit değilse, $a == $b eşitliği sonucu yanlış değerini taşır(false) ve $x in değeri 0 dır(Sıfır). Burada == operatörünün bir kıyas işlemi yaptığını görüyoruz. Kontrol ifadelerinde kıyas operatörleri sık sık kullanılır. örneğin;

if ($a == $b) {

print("$a eşittir $b\n");

}

Perlde, kıyas operatörleri 2 sınıfta kullanılır.



  1. Sayısal işlemlerde

  2. String işlemlerde

Tamsayı Kıyas Operatörleri:

Operatör

Açıklama

<

Küçük

>

Büyük

==

Eşit

<=

Küçük veya eşit

>=

Büyük veya eşit

!=

Eşit değil

<=>

Kıyaslama dönüşü 1, 0, veya-1

$a değişkeninde 5 varsa

$a > 4 sonucu true (doğru) veya 0 olmayan değer


$a > 7 sonucu false (yanlış) veya 0 dır.

<=> operatörü özel bir durum arz eder. Aşağıdaki 3 değerden birini döndürür.

0, Kıyaslanan iki değer eşitse


1, ilk değer büyükse
-1, ikinci değer büyükse

String Operatörler

String operatör

Kıyas işlemi

Sayısal opr.karşılığı

lt

Küçük

<

gt;

Büyük

>

eq

Eşit

==

le

Küçük veya eşit

<=

ge

Büyük veya eşit

>=

ne

Eşit değil

!=

cmp

Kıyaslama dönüşü 1, 0, veya-1

<=>

Örnekler :

$result = "aaa" lt "bbb"; # Doğru


$result = "aaa" gt "bbb"; # Yanlış
$result = "aaa" eq "bbb"; # Yanlış
$result = "aaa" le "aaa"; # Doğru
$result = "aaa" ge "bbb"; # Yanlış
$result = "aaa" ne "aaa"; # Yanlış
$result = "aaa" cmp "bbb"; # -1

String - Sayısal Kıyas Karşılaştırması:

Aşağıdaki örneklere bakalım.

$sonuç = "123" < "45"; # 123 ile 45 sayısal değer olarak kıyaslanır..sonuç yanlış(false)

$sonuç = "123" lt "45"; # 123 ile 45 alfabetik değer olarak kıyaslanır sonuç doğru(true).



Floating-Point Sayılarda Kıyaslama:

Bu sayılarda dikkat edilecek şey ondalık sonrasının net olmasıdır. Yuvarlanan sayı olursa sonuç hatalı çıkar. Ne demek istediğim aşağıdaki örnekten anlaşılacaktır.

#!/usr/local/bin/perl
$sayi1 = 14.3;
$sayi2 = 100 + 14.3 - 100;
print("sayi 1 : $sayi1, sayi 2 : $sayi2\n");
if ($sayi1 == $sayi2) {
print("sayi 1,sayi 2 ye eşittir\n");
}else {
print("sayi 1,sayi 2 ye eşit degildir\n");
}

Çıktı:


sayi 1 : 14.300000000000001, sayi 2 : 14.299999999999997

sayı 1, sayı 2 ye eşit değildir



Mantıksal operatörler ve alt ifadeler :

Örnek:


$myval = $a || $b || $c;

aşağıdaki ifadeyle aynıdır

if ($a != 0) {
$deger = $a;
} elsif ($b != 0) {

$deger = $b;


} else {
$deger = $c;
}

Örnek :

$deger = $a && $b && $c;
ifadesi aşağıdakiyle aynıdır.
if ($a == 0) {
$deger = $a;
} elsif ($b == 0) {
$deger = $b;
} else {
$deger = $c;
}

ATAMA OPERATÖRLERİ

Temel atama operatörü = göstergesidir. $a = 5; # 5 değeri $a değişkenin içine yerleştirilir.



ATAMA operatörleri tablosu Operatör

İzah

var = op1;

op1,var 'a atanır(op1 değeri var içine yerleşir).

var += op1;

var + op1 ,var'a atanır.

var -= op1;

var - op1 ,var'a atanır.

var *= op1;

var * op1 ,var'a atanır.

var /= op1;

var / op1 ,var'a atanır.

var %= op1;

var % op1 ,var'a atanır.

var .= op1;

var. op1 ,var'a atanır.

var **= op1;

var ** op1 ,var'a atanır.

var x= op1;

var x op1 ,var'a atanır.

var <<= op1;

var << op1 ,var'a atanır.

var >>= op1;

var >> op1 ,var'a atanır.

var &= op1;

var & op1 ,var'a atanır.

var |= op1;

var | op1 ,var'a atanır.

var ||= op1;

var || op1 ,var'a atanır.

var ^= op1;

var ^ op1 ,var'a atanır.

Örnekler :

$result = 42; # $result 'un değeri 42 olur


$value1 = $value2 = "a string"; # Hem $value1,hem de $value2 nin
#içine "a string" atanır.
$var = $var + 1;
ile
$var += 1;

aynı işlemi ifade eder. ($var değişkeninin değeri 1 arttırılır ve yeni değer tekrar $var'a konur)



Atama işlemleri örnekleri içeren bir tablo İfade kullanımı

Yürütülen işlem

$a = 1;

1,$a içine yerleşir

$a -= 1;

$a = $a - 1;

$a *= 2;

$a = $a * 2;

$a /= 2;

$a = $a / 2;

$a %= 2;

$a = $a % 2;

$a **= 2;

$a = $a ** 2;

$a &= 2;

$a = $a & 2;

$a |= 2;

$a = $a | 2;

$a ^= 2;

$a = $a ^ 2;

Yüklə 0,83 Mb.

Dostları ilə paylaş:
  1   2   3   4   5   6   7




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin