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


in reply to subroutine reference parameters

each returns two things, key and value. You only assign to $key. You probably wanted to use keys instead? Or this:
sub printElement { my ($key,$val) = @_; print $key,' ',$val,"\n"; } my %hash = (0 => 'a', 1 => 'b', 2 => 'c'); while(my ($key,$value) = each(%hash)) { &printElement($key, $value); }

Replies are listed 'Best First'.
Re^2: subroutine reference parameters
by gnosti (Chaplain) on Jun 04, 2011 at 01:38 UTC
    Hi,

    You posted a link to the documentation for 'each'. Perhaps you should re-read it! When called in scalar context, the function returns a key. When called in list context, it returns a key-value pair.

      OK, but ($key) = is not scalar context.