Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

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 all is quiet...

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (8)
As of 2018-07-20 11:00 GMT
Find Nodes?
    Voting Booth?
    It has been suggested to rename Perl 6 in order to boost its marketing potential. Which name would you prefer?

    Results (428 votes). Check out past polls.