ObyΦejnΘ pole umo₧nuje p°φstup ke sv²m polo₧kßm pomocφ Φφsla - indexu.
Prvnφ prvek pole @food je $food[0]. Druh² prvek je $food[1],
atd.
Perl navφc umo₧≥uje vytvß°et pole, k jeho₧ polo₧kßm se p°istupuje pomocφ klφΦe - °et∞zce.
TakovΘ pole se naz²vß asociativnφ pole.
Asociativnφ pole je pole s indexsekvenΦnφm p°φstupem.
Asociativnφ pole mß prefix %. Jako p°φklad vytvo°φme pole osob a jejich v∞ku.
%ages = ("Michael Caine", 39, "Dirty Den", 34, "Angie", 27, "Willy", "21 psich let", "The Queen Mother", 108);Nynφ m∙₧eme v∞k osob zφskat nßsledujφcφmi v²razy
$ages{"Michael Caine"}; # Vrßtφ 39 $ages{"Dirty Den"}; # Vrßtφ 34 $ages{"Angie"}; # Vrßtφ 27 $ages{"Willy"}; # Vrßtφ "21 psφch let" $ages{"The Queen Mother"}; # Vrßtφ 108VÜimn∞te si, ₧e znak % se zm∞nil na znak $, nebo¥ se odkazujeme na jednotlivΘ prvky asociativnφho pole (skalßrnφ prom∞nnΘ). Na rozdφl od b∞₧nΘho pole je index (v tomto p°φpad∞ jmΘno) uzav°eno ve slo₧en²ch zßvorkßch.
Asociativnφ pole je mo₧nΘ konvertovat na b∞₧nΘ pole tak, ₧e p°i°adφme asociativnφ pole prom∞nnΘ typu b∞₧nΘ pole. B∞₧nΘ pole m∙₧e b²t konvertovßno na asociativnφ pole p°i°azenφm k prom∞nnΘ typu asociativnφho pole. V ideßlnφm p°φpad∞ budou mφt ob∞ pole stejn² poΦet prvk∙.
@info = %ages; # @info je b∞₧nΘ pole o 10 prvcφch # $info[5]; # Vrßtφ hodnotu 27 # %moreages = @info; # %moreages je asociativnφ pole # Je shodnΘ s polem %ages
foreach $person (keys %ages) { print "Znam vek $person\n"; print "$person je stary $ages{$person}\n"; } print "-------------------------\n"; foreach $age (values %ages) { print "osobe je $age\n"; }Funkce keys vracφ seznam klφΦ∙ asociativnφho pole. Funkce values vracφ seznam hodnot pole. Tyto funkce vracφ hodnoty seznamu ve stejnΘm po°adφ, ale nenφ to po°adφ, ve kterΘm byly hodnoty do asociativnφho pole ulo₧eny.
Pokud jsou funkce keys a values volanΘ ve skalßrnφm kontextu, pak vracφ poΦet pßr∙ klφΦ/hodnota v asociativnφm poli. P°φklad volßnφ funkce keys ve skalßrnφm kontextu (porovnßvßnφ s nolou).
if ( keys(%ages) ) { # if keys () != 0 print "Asociativni pole je neprazdne\n"; } else { print "Asociativni pole je prazdne\n"; }
Existuje takΘ funkce each, kterß vracφ dvouprvkovΘ pole: klφΦ a hodnota. P°i ka₧dΘm volßnφ funkce each vracφ jinou dvojici klφΦ/hodnota:
while (($person, $age) = each(%ages)) { print "$person is $age\n"; }
print "Me jmeno je $ENV{'USER'} a "; print "pouzivam display $ENV{'DISPLAY'}\n";