Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister

Re: What is happening ?

by tilly (Archbishop)
on Aug 19, 2009 at 05:48 UTC ( #789691=note: print w/replies, xml ) Need Help??

in reply to problem using foreach and each with hash ref

You are assigning a single key/value pair to $key and $value, then making a list of 2 elements out of that list, then iterating over that list of 2 elements.

The next time you call each you'll get the next pair out of the hash.

The usual way to do what you likely want is:

foreach my $key (keys %$hash_ref) { my $value = $hash_ref->{$key}; ... }

Replies are listed 'Best First'.
Re^2:problem using foreach and each with hash ref
by vinoth.ree (Monsignor) on Aug 19, 2009 at 05:56 UTC
    The next time you call each you'll get the next pair out of the hash.

    I get printed only, what the each returns and foreach get ends.

    Title updated
      You most likely want to use something like this:
      while (($key, $value) = each %$hash_ref) { # do something... }
      An example like this is also mentioned in the documentation for each. tilly already explained the reason your loop ends after the first key and value.

        Is it possible to get each pair of key and value in foreach with each function ?

      Yes, executing that loop only called each once. But if after that loop you put a second loop that calls each, then that second loop will get a second pair out of the hash. Or if you try to iterate through with a while/each loop, you'll get every pair except the one already consumed in the for loop.

      In other words the hash has been left in a potentially bad state.

        OK thanks!

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://789691]
[LanX]: "DH" eq "Dumb Homies "?
[shmem]: no, no previous, and python just accepts that.

How do I use this? | Other CB clients
Other Users?
Others perusing the Monastery: (9)
As of 2018-03-20 18:21 GMT
Find Nodes?
    Voting Booth?
    When I think of a mole I think of:

    Results (257 votes). Check out past polls.