Poprzedni rozdział: Tablice
Następny rozdział: Operacje wejścia/wyjścia

Hasz jest podobny do zwyczajnej tablicy, ale zamiast używać całkowitych indeksów, hasz używa kluczy, które mogą być dowolną wartością skalarną. Zazwyczaj kluczami są łańcuchy znaków lub liczby.

Składnią hasza jest sSyntax: zamiast używać operatora @, asocjacyjne tablice używają symbolu %, a także zamiast używać kwadratowych nawiasów [] jak w $myarray[0], do elementów w haszu odwołujemy się za pomocą nawiasów klamrowych {} jak w $myhash{"george"}

Hasze są jedną z najpotężniejszych i najczęściej używanych cech Perla. Typowym użyciem może być zbudowanie hasza, który przechowuje słownik - każdy klucz jest słowem w słowniku, a odpowiednie wartości definicją tego słowa.

Aby stworzyć hasz przechowywujący różne dźwięki zwierząt, możemy napisać tak:

my %dzwieki_zwierzat = ("kot" => "miau",
                        "pies" => "hau",
                        "waz" => "ssss");   

Aby dostać się do wybranego elementu, używamy nawiasów klamrowych:

print STDOUT "Kot mowi " . $dzwieki_zwierzat{"kot"} . ".\n";

wypisze do STDOUT takie oto słowa:

Kot mowi miau.

Aby dodać nowy 'dźwięk' do hasza możemy napisać:

$dzwieki_zwierzat{"mysz"} = "pii!";

Aby nadpisać istniejący element, możemy napisać podobnie:

$dzwieki_zwierzat{"pies"} = "arf!";  # pies mówi teraz "arf!"

Aby usunąć element z hasza, użyj funkcji delete

delete($dzwieki_zwierzat{"kot"});  # usuwamy klucz "kot" z naszego hasza


Notatka: Pamiętaj, że w haszu nie mogą istnieć dwa takie same klucze. Przypisując ponownie wartość kluczowi, zamazuje się starą. Z drugiej strony, można to wykorzystać, jeśli chcemy tworzyć listy elementów bez powtórzeń.

Znajdowanie wszystkich kluczy i wartości

edytuj

Aby znaleźć wszystkie klucze lub wszystkie wartości w haszu, możemy użyć funkcji keys i values:

@wszystkie_zwierzeta = keys(%dzwieki_zwierzat);
@wszystkie_dzwieki = values(%dzwieki_zwierzat);

"Tablice asocjacyjne"

edytuj

Oryginalnie "hasz" (ang. hash) był nazywany "tablicą asocjacyjną", ale ten termin jest już lekko nieaktualny (ludzie po prostu zmęczyli się ciągłym wymawianiem ośmiu sylab). Jakkolwiek nie jest to intuicyjne dla nowych programistów Perla, "hasz" jest obecnie preferowanym określeniem. Termin ten pochodzi od informatycznego terminu tablicy haszującej.

Poprzedni rozdział: Tablice
Następny rozdział: Operacje wejścia/wyjścia