Tablice w Perlu identyfikujemy z pomocą przedrostka @. Tablice to wielowartościowe zmienne skalarne. W tablicy można przechować wiele zmiennych. Składnia przetwarzania zmiennych tablicowych pokazana jest w poniższym przykładzie:
@jeden_do_dziesieciu = ("jeden", "dwa",
"trzy", "cztery",
"pięć", "sześć",
"siedem", "osiem",
"dziewięć", "dziesięć");
Tablice w Perlu indeksowane są od liczby zero w górę. Dlatego też, jeśli chcemy uzyskać dostęp do jednej z wartości w tablicy, musimy o tym fakcie pamiętać. Tak więc, jeśli chcemy wybrać wartość "siedem" z @jeden_do_dziesieciu, musielibyśmy użyć następującej składni:
print "$jeden_do_dziesieciu[6]\n";
Jeśli zaś chcemy wyświetlić wszystkie wartości z @jeden_do_dziesieciu możemy użyć instrukcji foreach w następujący sposób:
foreach $numer (@jeden_do_dziesieciu) {
print "$numer\n";
}
Zmienna tymczasowa $numer w instrukcji foreach może być zastąpiona dowolną inną nazwą. Jest to jedynie odnośnik, który wykorzystujemy po to, aby uzyskać każdą wartość z tablicy.
Tablice haszowane ("hasze", tablice asocjacyjne)
Hasz nie jest typową tablicą. Jest to tak zwana tablica odnośników, lub "grupa elementów w parach". Nazwy tablic haszowanych w Perlu mają prefiks % (znak procent). Każdy element tablicy haszowanej składa się z pary: klucza i wartości. Poniżej prezentujemy najbardziej czytelny sposób deklaracji tablicy haszowanej:
%mojserwer = (
"skrypty" => "http://www.serwer.pl/skrypty/",
"aplety" => "http://www.serwer.pl/aplety/",
"informacje" => "http://www.serwer.pl/informacje/"
);
Jeśli chcielibyśmy jedynie uzyskać wartość dla klucza "skrypty" z tablicy haszowanej mojserwer konieczne byłoby wywołanie następującej komendy:
print "$mojserwer{'skrypty'}\n";
Jeśli jednak chcemy wyświetlić wszystkie wartości z tablicy haszowanej, trzeba będzie użyć znów instrukcji foreach, ale w nieco bardziej złożony sposób:
foreach $klucz (keys %mojserwer) {
print "wartość dla $klucz to: $mojserwer{$klucz}\n";
}
Klucze są elementem identyfikacyjnym tablicy haszowanej. W %mojserwer klucze to "skrypty", "aplety" i "informacje".