http://www.perlmonks.org?node_id=1166066


in reply to Peek a hash without breaking iterator

hi hurricup,

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";

Replies are listed 'Best First'.
Re^2: Peek a hash without breaking iterator
by hurricup (Pilgrim) on Jun 19, 2016 at 07:38 UTC
    I don't get your point. If you are saying how to modify source code - I know it, but can't do. Check the last paragraph of the question.