İçindekilerGirişİndex
YukarıİlkÖncekiSonrakiSon
Geriİleri
Yazdı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

Göster Gizle Kopar Satır Gizle Satır Göster
#!/usr/local/bin/perl

#program 2 rakamının girdiginiz deger olarak üssünü bulur

print ("Kullanacaginiz üs degerini giriniz:\n");

$us = <STDIN>;

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

-5) ** 2.5  ..gibi 

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.

Tamsayı Kıyas Operatörleri:

OperatörAçı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örKıyas işlemiSayısal opr.karşılığı
ltKüçük<
gt;Büyük>
eqEşit==
leKüçük veya eşit<=
geBüyük veya eşit>=
neEşit değil!=
cmpKı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.

Göster Gizle Kopar Satır Gizle Satır Göster
#!/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;

Alt ifadelerle Kullanım :

($a = $b) += 3;

bu örnekte işleyiş şöyledir. Önce parantez içi işlenir. Bu durumda $a = $b; ve $a += 3; işlemleri yapılır

Otomatik Arttırma ve eksiltme:

$a = $a + 1; 
$a += 1;

Her iki örnekte de $a değeri 1 artırılmaktadır. $a değerini otomatik arttırma kullanımı ise şöyledir

$a++;  veya  ++$a; 

1. ve 2. ifadedeki fark şudur. 1.de arttırma işlemi atama işleminden önce 2. de sonra yapılmasını belirler. Otomatik eksiltmede buna benzer.Aynı mantıkla çalışır. Sadece işlem eksiltme şeklinde gerçekleşir.

$a--;  veya  --$a; 

Örnek program : Program adı preprg.pl olsun

Göster Gizle Kopar Satır Gizle Satır Göster
#!/usr/local/bin/perl 

$sayi = 0; 

while (++$sayi <= 5) { 

  print("Deger: $sayi\n"); 

} 

print("Son !\n");

Çalışması :

>preprg.pl 

 Deger: 1 

 Deger: 2 

 Deger: 3 

 Deger: 4 

 Deger: 5 

 Son ! 

> 

Örnek program : Program adı preprg2.pl olsun

Göster Gizle Kopar Satır Gizle Satır Göster
#!/usr/local/bin/perl 

$sayi = 0; 

while ($sayi++ <= 5) { 

print(" Deger: $sayi\n"); 

} 

print("Son !\n");

Çalışması :

>prepprg2.pl 

 Deger: 1 

 Deger: 2 

 Deger: 3 

 Deger: 4 

 Deger: 5 

 Deger: 6 

 Son ! 

> 

Bu örneğin çalışmasını anlamak için şu tabloyu inceleyelim.

$valueTest anındaSonuç$value Testten sonra
0true (0 <= 5)1
1true (1 <= 5)2
2true (2 <= 5)3
3true (3 <= 5)4
4true (4 <= 5)5
5true (5 <= 5)6
6false (6 <= 5)7 (while döngüsü çıkışı)

STRiNGLERDE OTOMATİK ARTTIRMA

$string1 = "abc";

$string1++;

Şu anda $string1 içindeki değer "abd" dir.

Stringlerde otomatik eksiltme olmaz ($string1--). Böyle bir durumda string içindeki değer -1 olur.

$string1 = "aBC";

$string1++;

Şu anda $string1 içindeki değer "aBD" dir.

$string1 = "abz";

$string1++;          # $string1 içi "aca" dır.

$string1 = "AGZZZ";

$string1++;          # $string1 içi "AHAAA" dır.

$string1 = "bc999";

$string1++;          # $string1 içi "bd000" dır

STRİNG BİRLEŞTİRME VE TEKRARLAMA:

Birleştirme :

$yenistring = "tas" . "kafa";

satırı sonucu olarak $newstring değişkeninin içeriği "taskafa" olur.

. operatörü değişkenlerle de kullanılır. Örn:

$string1 = "tas";

$string2 = "kafa";

$yenistring = $string1 . $string2;

$yenistring değişkeninin içeriği " taskafa " olur.

Tekrarlama:

$yenistring = "t" x 5;

$yenistring değişkeninin içeriği "ttttt" olur.

x operatörü değişkenlerle de kullanılır. Ör:

$string1 = "t";

$tekrar = 5;

$yenistring = $string1 x $tekrar;

$yenistring değişkeninin içeriği "ttttt" olur.

x operatörü kullanırken x etrafında boşluk bulunmalıdır.

$yeni = $eski x 5; #Doğru kullanım

$yeni = $eskix 5; # Yanlış  "

$yeni = $eski x5; # Yanlış  "   

BİRLEŞTİRME ve ATAMA:

$a = "Ata";

$a .= "türk";  # $a nın değeri şimdi "Atatürk" dir.

Aşağıdaki kullanımda aynı sonucu verir.

$a = "Ata";

$a = $a . "türk";

Örnek Program : Program adı strcon.pl olsun

Göster Gizle Kopar Satır Gizle Satır Göster
#!/usr/local/bin/perl

$sonuc = "";

print("Kelimeler giriniz çıkış için sadece enter basınız\n");

$gir = <STDIN>;

chop ($gir);

while ($gir ne "") {

$sonuc .= $gir;

$gir = <STDIN>;

chop ($gir);

}

print ("Girilen kelimeler:\n");

print ("$sonuc \n");

Çalısması:

>strcon.pl

Kelimeler giriniz çıkış için sadece enter basınız

ben

sen

o

Girilen kelimeler:  benseno

>

DİĞER OPERATÖRLER:

, (virgül) operatörü; ifadeyi parçalara ayırır. Ör:

$a1 += 1;

$a2 = $a1;

satırları virgül kullanımı ile şu şekilde kodlanır,

$a1 += 1,  $a2 = $a1;

, operatörü atama işlemlerinde sıkça kullanılır, Ör:

$val = 26;

$result = (++$val, $val + 5);

ilkönce ++$val işlenir çünki virgülden öncedir $val,27 olur. Sonra 5 eklenir 32 olur bu değer,$result 'e atanır.

ŞART(Koşul) operatörleri:

Bunlar ? ve : operatörleridir. Ör:

$sonuc = $a == 0 ? 14 : 7;

çalışmasını inceleyerek anlayalım;eğer $a == 0 ise , $sonuc değişkenine 14 atanır, değilse 7 atanır.Yani koşul doğru ise ? sonrası, yanlış ise : sonrası atanır.,eğer bu işlemi if else ile yapmak isteseydik şöyle kodlayacaktık.

if ($a == 0) {

	$sonuc = 14;

} else {

	$sonuc = 7;

}

Bir de şunu inceleyelim;

$kosul == 43 ? $a1 : $a2 = 14;

Buradaki işleyiş ise şöyledir; Eğer $kosul içindeki değer 43 ise, $a1 'e 14 atanır. Değilse $a2'ye 14 atanır..

Örnek Program : program adı pwdprg.pl olsun

Göster Gizle Kopar Satır Gizle Satır Göster
#!/usr/local/bin/perl

print ("Parola giriniz:\n");

$parola = "ertan";

$giris = <STDIN>;

chop ($giris);

$sonuc = $giris eq $parola ? "Dogru parola!\n" : "Yanlis parola.\n";

print ($sonuc);

Çalışması:

>pwdprg.pl

Parola giriniz:

abc

Yanlis parola.
>

Dosya Listesi

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