¿Por qué cada () Perl no itera a través de todo el hash la segunda vez?
Tengo un script simple que intenta aprender sobre hashes en Perl.
#!/usr/bin/perl
my %set = (
-a => 'aaa',
-b => 'bbb',
-c => 'ccc',
-d => 'ddd',
-e => 'eee',
-f => 'fff',
-g => 'ggg'
);
print "Iterate up to ggg...\n";
while ( my ($key, $val) = each %set ) {
print "$key -> $val \n";
last if ($val eq 'ggg');
}
print "\n";
print "Iterate All...\n";
while ( my ($key, $val) = each %set ) {
print "$key -> $val \n";
}
print "\n";
Estoy sorprendido por la salida: -
Iterate upto ggg...
-a -> aaa
-c -> ccc
-g -> ggg
Iterate All...
-f -> fff
-e -> eee
-d -> ddd
-b -> bbb
Entiendo que las claves están en hash, por lo que la primera salida puede ser 'n' elementos dependiendo del orden interno. Pero, ¿por qué no puedo hacer un bucle de la matriz después? Que pasa
Gracias,