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',
      ];