each
. La función
each
toma un hash
como argumento y devuelve una clave distinta
cada vez que es llamada. Cuando todas las claves han sido visitadas,
devuelve undef
.
Veamos un ejemplo:
while (defined($nextkey = each %a)) { print "The key $nextkey has the value $a{$nextkey}\n"; }
Si each
es llamada dentro de un contexto de lista,
devuelve una lista con dos elementos: la siguiente clave y el siguiente
valor. después que todos los elementos del hash
hayan sido
visitados, each
devuelve una lista vacía. Por ejemplo:
while (($nextkey, $nextval) = each %sound) { print "The key $key has the value $nextval\n"; }
Cada hash tiene su propio iterador privado. Esto permite el anidamiento
de bucles each
, siempre que esten iterando sobre hashes diferentes.
El iterador es reinicializado automáticamente al usar las funciones keys
o values
sobre el hash. También es reinicializado
si se almacena una nueva lista de valores en el hash completo o si each
ha iterado
sobre todos los elementos del mismo, alcanzando el final del hash.
Sin embargo, almacenar una nueva pareja clave-valor durante
la iteración no necesariamente reinicializa el iterador.