each HASH
Kai iškviečiamas sąrašo kontekste, gražina dviejų elementų sąrašą, susidedantį iš rakto ir reikšmės kitam hash'o elementui, taip, kad būtų galima jį perkartoti. Kai iškviečiamas skaliariniame kontekste, gražina tik raktą sekančiam hash'o elementui.
Įrašai grąžinami atsitiktine tavarka. Tikroji "atsitiktinė tvarka" žada būti keičiama ateinančiose perlo versijose, bet garantuotai bus tokiu išsidėstymu kaip kad keys ar values
funkcijos rezultatas tokiame pačiame (nepakeistame) hash'e. Nuo Perl 5.8.1 išdėstymas yra skirtingas netgi tarp skirtingų Perl paleidimų saugumo sumetimais (žr. "Algorithmic
Complexity Attacks" perlsec'e).
Kai hash'as visiškai nuskaitytas, tuščias masyvas yra grąžinamas sąrašo kontekste (kuris, kai priskirtas, žymi false (0 ) reikšmę), ir undef skaliariniame
kontekste. Sekantis kreipimąsis į each vėl pradės iteraciją. Yra vienas iteratorius kiekvienam hash'ui, kuriuo dalinąsi visi each, keys, ir values
funkcijų iškvietimai programoje; tai gali būti nuresetinta nuskaitant visus hash elementus ar prilyginant keys HASH arba
values HASH .
Jei iteracijos metu pridedami ar ištrinami elementai, gali būti, kad įrašai dubliuosis arba išvis bus praleisti, taigi taip daryti nepatartina. Išimtis: visada saugu ištrinti paskutinį elementą, gražintą each(), kas reiškia, kad šis kodas
veiks:
while (($key, $value) = each %hash) {
print $key, "\n";
delete $hash{$key}; # Saugu
}
Kitas pavyzdys išveda tą patį kaip ir printenv(1) programa - environmentą, tik skirtinga tvarka:
while (($key,$value) = each %ENV) {
print "$key=$value\n";
}
Taip pat žr. keys, values ir
sort.