Beefy Boxes and Bandwidth Generously Provided by pair Networks
"be consistent"
 
PerlMonks  

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}; ... }


Comment on Re: What is happening ?
Download Code
Re^2:problem using foreach and each with hash ref
by vinoth.ree (Parson) 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.

    Update:
    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?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://789691]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (7)
As of 2014-11-27 17:42 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    My preferred Perl binaries come from:














    Results (186 votes), past polls