Excerpts from the man pages:
each "When called on a hash in list context, returns a 2-element list consisting of the key and value for the next element of a hash."
keys "Called in list context, returns a list consisting of all the keys of the named hash."
values "In list context, returns a list consisting of all the values of the named hash."
As you can see the example below each is executed repeatedly however keys and values are called only once.
use strict; use warnings; my %hash = ('Hello' => 'World'); while ( my ( $key, $value ) = each %hash ) { #my %otherhash = %hash; print "\n$key=$value"; } print "\n------------------\n"; foreach ( keys %hash ) { my %otherhash = %hash; print "\n$_=$hash{$_}"; } print "\n------------------\n"; foreach ( each %hash ) { my %otherhash = %hash; print "\n$_\n"; } print "\n------------------\n";
In reply to Re: Peek a hash without breaking iterator
by pme
in thread Peek a hash without breaking iterator
by hurricup
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |