Beefy Boxes and Bandwidth Generously Provided by pair Networks
Problems? Is your data what you think it is?

Re^3: What is happening ?

by goeb (Pilgrim)
on Aug 19, 2009 at 06:06 UTC ( #789698=note: print w/replies, xml ) Need Help??

in reply to Re^2:problem using foreach and each with hash ref
in thread problem using foreach and each with hash ref

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.

Replies are listed 'Best First'.
Re^4: What is happening ?
by vinoth.ree (Monsignor) on Aug 19, 2009 at 06:12 UTC

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

      each is an iterator. Foreach loops works on list. You're asking if it's possible to cut a piece of wood with a screwdriver.

      A foreach loop (whether using the for or foreach keyword) calls the list building expression once, and iterates over the resulting list.

      A C-style for loop (whether using the for or foreach keyword) could, since it's really a while loop with bells and whistles.

      Since you can probably cut a piece of wood with a screwdriver if you tried hard enough,

      for my $pair ( sub { my @pairs; while (my ($k,$v) = each %h) { push @pairs, [$k,$v] } @pairs }->() ) { my ($k,$v) = @$pair; ... }
      But using the appropriate tool is better.
      while (my ($k,$v) = each %h) { ... }
      for my $k (keys %h) { my $v = $h{$k}; ... }
        Actually :)
        #!/usr/bin/perl -- use strict; use warnings; my %f = 1 .. 4; for( ; my($k,$v) = each %f ; ){ print qq!($k)=($v)\n!; } __END__ (1)=(2) (3)=(4)
        But B::Deparse reveals
        use warnings; use strict 'refs'; my(%f) = 1..4; while (my($k, $v) = each %f) { do { print "($k)=($v)\n" }; } __DATA__
        So I'm not sure :D

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chilling in the Monastery: (6)
As of 2018-12-14 08:37 GMT
Find Nodes?
    Voting Booth?
    How many stories does it take before you've heard them all?

    Results (64 votes). Check out past polls.