Tablice

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".