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
.