#!/usr/bin/perl
#
# Diziler, listeler ve hash'ler.
#
<:vspace>
use strict;
use warnings;
<:vspace>
my (@d1,
@d2,
@d3);
my ($x,
$y,
$z);
<:vspace>
# Dizi oluşturma.
@d1 =
("a",
"b");
print "d1: @d1\n";
<:vspace>
# qw
@d2 =
qw(c d
);
print "d2: @d2\n";
<:vspace>
# range operat�r� (..)
@d3 =
(1 ..
10);
print "d3: @d3\n";
<:vspace>
# Dizideki toplam eleman sayısı
print "d3 dizisinin eleman sayisi: " .
scalar(@d3) .
"\n";
<:vspace>
# Dizideki son elemanın indexi.
print "d3 dizisindeki son elemanin indexi: ". $
#d3 . "\n";
<:vspace>
# Diziyi resetlemek i�in:
@d1 =
();
print "d1 dizisi sıfırlandı: " ,
"@d1\n";
<:vspace>
# Dizinin elemanlarına tersten erişim:
print "d3 dizisinin son elemanı: ",
$d3[-
1] .
"\n";
# Dizideki son eleman.
print "d3 dizisinin sondan 2. elemanı: " ,
$d3[-
2] .
"\n";
# Dizideki son eleman.
<:vspace>
# Bir listedeki elemanların değişkenlere atanması.
($x,
$y,
$z) =
("x",
"y",
3);
print "$x - $y - $z \n";
<:vspace>
# Dizinin belirli indexlerine eleman atama.
@d3[2,
4,
6,
8] =
qw(aa bb cc dd
);
print "d3 dizisi: @d3\n";
<:vspace>
# Listelerde atama.
($x,
@d1,
$y) =
( 42 ..
52);
# $y'ye değer atanmaz!!!!
print "x : $x \n";
print "d1 : @d1 \n";
print "y : $y \n";
<:vspace>
# push ile dizinin sonuna eleman ekleme:
push(@d1,
"99");
print "d1'e push ile 99 eklendi: @d1 \n";
<:vspace>
# pop ile dizinin sonundan eleman �ıkarma.
my $cikarildi =
pop(@d1);
print "d1'den pop ile son eleman �ıkarıldı: @d1 \n";
print "�ıkarılan eleman: $cikarildi\n";
<:vspace>
# shift ile 1. elemanın silinmesi)
my $silindi =
shift(@d1);
print "d1 : @d1 \n";
print "d1'in boyutu " .
scalar(@d1) .
"\n";
print "Silinen eleman: $silindi\n";
<:vspace>
# unshift ile dizinin başına eleman ekleme.
unshift(@d1,
"11");
print "d1 : @d1 \n";
<:vspace>
#splice(@dizi, baslangic indisi, uzunluk, eklenecek liste)
my @cikarilanlar =
splice(@d1,
3,
2,
(999,
999));
print "d1 : @d1 \n";
print "d1'de yerleri değiştirilen elemanlar: @cikarilanlar\n";
<:vspace>
# splice ile dizinin belirli indislerinin �ıkarılması.
@cikarilanlar =
splice(@d1,
3,
2);
print "d1'den 3. ve 4. indislerin �ıkarılması : @d1 \n";
print "d1'in boyutu: " ,
(scalar(@d1)) ,
"\n";
<:vspace>
# splice ile dizideki elemanların bir indisten sonrasının �ıkarılması
@cikarilanlar =
splice(@d1,
5);
print "d1'den 5. indisten sonrasının �ıkarılması (5. indis de �ıkarılır): @d1 \n";
print "d1'in boyutu: " ,
(scalar(@d1)) ,
"\n";
<:vspace>
# splice ile dizideki t�m elemanların silinmesi:
@cikarilanlar =
splice(@d1);
print "d1 dizisindeki elemanlar splice ile �ıkarıldı: @d1\n";
print "d1'in boyutu: " ,
(scalar(@d1)) ,
"\n";
<:vspace>
# reverse ile dizideki elemanların ters �evrilmesi.
my @tersten =
reverse(@d3);
print "d3 dizisi: @d3\n";
print "d3 dizisinin reverse ile tersten yazılması: @tersten\n";
<:vspace>
# sort ile dizinin sıralanması(lexically, ASCII karatke tablosuna g�re)
my @sirali =
sort(@d3);
print "d3 dizisinin sort ile sıralanması: @sirali\n";
<:vspace>
# sort ve <=> ile numerik sıralama
my @numerik_sirali =
sort { $a <=>
$b } @d3;
print "d3 dizisinin sort ile numerik sıralanması: @numerik_sirali\n";
<:vspace>
# cmp ile lexically karşılaştırma.
# ???
<:vspace>
# Dizideki elemanların dong� ile yazdırılamsı.
print "for ile d3 dizisinin yazdırılamsı: ";
for ($x =
0;
$x <
@d3;
$x++
) { # Burdaki @d3 yerine scalar(@d3) de yazılabilir.
print $d3[$x] ,
"-";
}
print "\n";
<:vspace>
# % ile hash oluşturulması.
my %h1 =
( isim =>
'Sopar', tur =>
'Siyam');
<:vspace>
# keys ile hash'in key'lerinin listelenmesi
print "h1'in keyleri: ";
foreach (keys(%h1)) {
print $_ ,
" - ";
}
print "\n";
<:vspace>
# values ile hash'in value'lerinin listelenmesi.
print "h1'in vaule'ları: ";
foreach (values(%h1)) {
print $_ .
" - ";
}
print "\n";
<:vspace>
# hash'in belli bir key'ine erişim.
print "tur: ",
$h1{'tur'},
"\n";
<:vspace>
# hash'in belli bir key'ine değer atanması:
$h1{'tur'} =
"Tekir";
print "tur: " .
$h1{'tur'},
"\n";
<:vspace>
# each ile key-value �iftlerine erişim
print "each ile key-value �iftlerine erişim \n";
while ( (my $key,
my $value) =
each(%h1) ) {
print "$key : $value \n";
}
<:vspace>
# hast'te reverse ile key ve values'ların yer değiştirlimesi.
print "reverse ile key ve value'ların yer değiştirmesi\n";
my %reversed =
reverse(%h1);
while ( (my $key,
my $value) =
each(%reversed) ) {
print "$key : $value \n";
}
<:vspace>
# delete ile hash'ten eleman �ıkarılması.
delete($h1{'tur'});
<:vspace>
# exist ile bir key'in hash'te olup olmadığının kontrol edilmesi.
if (exists($h1{'isim'}) ){
print "isim key'i h1'de var. \n";
}
<:vspace>
# undef ile belli bir key'e değer atanım atanmadığını bulunması.
undef($h1{'isim'});
if (defined($h1{'isim'}) ) {
print "isim key'ine değer atanmış. \n";
} else {
print "isim key'inin degeri yok.\n";
}
<:vspace>
# Bir dizideki elemanların hash'e key olarak atkarılması.
my @opinions =
qw(my opinion
);
my %h2;
foreach (@opinions) {
$h2{$_} =
"";
}
print "h2 keys: ",
keys(%h2) ,
"\n";
print "h2 values : ",
values(%h2) ,
"\n";
<:vspace>
# hash'in value'larına g�re numerik sıralanması(b�y�kten k���ğe)
print "h2'nin b�y�kten k���ğe sıralanması: ";
$h2{'my'} =
99;
$h2{'opinion'} =
44;
foreach ( sort{ $h2{$b} <=>
$h2{$a} } keys(%h2) ) {
print $_ ,
":",
$h2{$_} ,
" ";
}
print "\n";
<:vspace>
# hash'in value'larına g�re numerik sıralanması(k���kten b�y�ğe)
print "h2'nin k���kten b�y�ğe sıralanması: ";
$h2{'my'} =
99;
$h2{'opinion'} =
44;
foreach ( sort{ $h2{$a} <=>
$h2{$b} } keys(%h2) ) {
print $_ ,
":",
$h2{$_} ,
" ";
}
print "\n";
<:vspace>
# hash referansının scalar değişkene atanması
my $ref =
{bir=>
"1", iki=>
"iki",
'uc'=>
"3",
'a b'=>
'cd'};
print "bir: ",
$ref->
{'bir'} ,
"\n";
print "uc: ",
$ref->
{'uc'} ,
"\n";
print "a b: ",
$ref->
{'a b'} ,
"\n";