Beefy Boxes and Bandwidth Generously Provided by pair Networks DiBona
Perl: the Markov chain saw

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 usual way to do what you likely want is:

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

Comment on Re: What is happening ?
Download Code
Re^2:problem using foreach and each with hash ref
by vinoth.ree (Vicar) on Aug 19, 2009 at 05:56 UTC


    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]
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others surveying the Monastery: (7)
As of 2014-03-13 23:20 GMT
Find Nodes?
    Voting Booth?

    Have you used a cryptocurrency?

    Results (293 votes), past polls