Perl eğitiminin bu bölümünde Perl'de dizileri öğreneceğiz. Bu bölüm Perl'de dizilerin nasıl çalıştığına dair bir bakış olacak. Daha detaylı açıklamaları sonra göreceğiz.
Perlde dizi değişken adları @
karakteri ile başlar.
strict
kullanımındaki ısrarımıza bağlı olarak, bu değişkenleri ilk kullanımdamy
anahtar sözcüğü
ile tanımlamalısınız.
Örneklerin tümünde dosyanızın aşağıdaki terimlerle başladığını varsayıyoruz.
use strict;
use warnings;
use 5.010;
Bir dizi tanımlama
my @names;
Dizi tanımlama ve değer atama:
my @names = ("Foo", "Bar", "Baz");
Bir diziyi debug etme
use Data::Dumper qw(Dumper);
my @names = ("Foo", "Bar", "Baz");
say Dumper \@names;
Çıktı:
$VAR1 = [
'Foo',
'Bar',
'Baz'
];
foreach döngüsü ve Perl dizileri
my @names = ("Foo", "Bar", "Baz");
foreach my $n (@names) {
say $n;
}
Çıktı:
Foo
Bar
Baz
Dizinin bir elemanına erişim
my @names = ("Foo", "Bar", "Baz");
say $names[0];
Dizinin bir elemanına erişirken @
işaretinin $
işaretine dönüştüğüne dikkat edelim.
Bu bazi insanlarda karışıklığa yol açabilir ama düşünüldüğünde sebebinin açık olduğu görülür.
@
çoğul u gösterir, $
ise tekili. Dizinin bir elemanına erişirken
düzgün skalar bir değişken gibi davranış gösterir.
Diziyi indeksleme
Dizinin indeksi 0'dan başlar. Son index şu değişkende tutulmaktadır
$#dizinin_adı
. Bu nedenle
my @names = ("Foo", "Bar", "Baz");
say $#names;
kod parçacığı ekrana 2 yazar çünkü ideksler 0,1 ve 2'dir.
Dizinin uzunluğu veya boyutu
Perl'de dizinin boyutunu bulmak için özel bir fonksiyon yoktur ama boyutu hesaplamak
için birçok yol vardır. Bir tanesi, dizinin son indeksinin 1 fazlası değerin dizinin
boyutu olduğudur. Yukarıdaki örnekte $#names+1
dizinin boyutu veya
uzunluğudur.
Ek olarak scalar
fonksiyonu dizinin boyutunu bulmak için kullanılabilir:
my @names = ("Foo", "Bar", "Baz");
say scalar @names;
Ekrana 3 yazar.
scalar fonksiyonu bir çeşit tip dönüştürme fonksiyonudur, diziyi skalar a dönüştürür. Bu dönüşüm aynı zamanda dizinin boyutunu verir.
Bir dizinin indeksleri üzerinde döngü
Dizinin değerleri üzerinde dönmenin yeterli olmadığı durumlar vardır. Hem değere hem de değerin indeksine ihtiyacımız olabilir. Bu durumda indeksler üzerinde dönmeye ve indeksleri kullanarak değerlere ulasmaya ihtiyacımız var:
my @names = ("Foo", "Bar", "Baz");
foreach my $i (0 .. $#names) {
say "$i - $names[$i]";
}
çıktı:
0 - Foo
1 - Bar
2 - Baz
push kullanımı
push
dizinin sonuna yeni bir eleman ekler, diziyi büyütür:
my @names = ("Foo", "Bar", "Baz");
push @names, 'Moo';
say Dumper \@names;
Sonuç:
$VAR1 = [
'Foo',
'Bar',
'Baz',
'Moo'
];
pop kullanımı
pop
dizinin son elemanini alır:
my @names = ("Foo", "Bar", "Baz");
my $last_value = pop @names;
say "Last: $last_value";
say Dumper \@names;
Sonuç:
Last: Baz
$VAR1 = [
'Foo',
'Bar',
];
shift kullanımı
shift
dizinin sol ilk elemanını donderir
ve diğer elemanları bir sola kaydırır:
my @names = ("Foo", "Bar", "Baz");
my $first_value = shift @names;
say "First: $first_value";
say Dumper \@names;
Sonuç:
First: Foo
$VAR1 = [
'Bar',
'Baz',
];