Ho un semplice script che cerca di conoscere gli hash in Perl.Perché la Perl() non esegue iterate attraverso l'intero hash la seconda volta?
#!/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";
Sono sorpreso dall'uscita: -
Iterate upto ggg...
-a -> aaa
-c -> ccc
-g -> ggg
Iterate All...
-f -> fff
-e -> eee
-d -> ddd
-b -> bbb
Capisco che le chiavi sono hash quindi la prima uscita può essere 'n' elementi a seconda l'ordinamento interno. Ma perché non riesco a ripetere l'array in seguito? Cosa c'è che non va ?
Grazie,
Grazie. A proposito, è possibile resettare "ciascuno" all'inizio? –
"% hash =% hash" sembra funzionare. – jrockway
(perlfaq4 suggerisce di chiamare "chiavi" sull'hash nel contesto vuoto. Ciò potrebbe evitare una copia non necessaria.) – jrockway