Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^4: What is happening ?

by vinoth.ree (Monsignor)
on Aug 19, 2009 at 06:12 UTC ( [id://789701]=note: print w/replies, xml ) Need Help??


in reply to Re^3: What is happening ?
in thread problem using foreach and each with hash ref

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

Replies are listed 'Best First'.
Re^5: What is happening ?
by ikegami (Patriarch) on Aug 19, 2009 at 14:38 UTC

    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}; ... }
Re^5: What is happening ?
by grizzley (Chaplain) on Aug 19, 2009 at 08:11 UTC
      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
        Ok, I give up, I will disprove the other half of my thesis by myself :)
        %f=1..4; while(($k)=keys%f) { print qq!($k)=($f{$k})\n!; delete $f{$k} }

Log In?
Username:
Password:

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

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (5)
As of 2024-04-20 00:13 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found