Beefy Boxes and Bandwidth Generously Provided by pair Networks Bob
Perl Monk, Perl Meditation
 
PerlMonks  

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.


Comment on Re^3: What is happening ?
Download Code
Re^4: What is happening ?
by vinoth.ree (Vicar) on Aug 19, 2009 at 06:12 UTC

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

        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

      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) { ... }
      or
      for my $k (keys %h) { my $v = $h{$k}; ... }

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others meditating upon the Monastery: (4)
As of 2014-04-20 17:50 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (485 votes), past polls