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,
But using the appropriate tool is better.for my $pair ( sub { my @pairs; while (my ($k,$v) = each %h) { push @pairs, [$k,$v] } @pairs }->() ) { my ($k,$v) = @$pair; ... }
orwhile (my ($k,$v) = each %h) { ... }
for my $k (keys %h) { my $v = $h{$k}; ... }
In reply to Re^5: What is happening ?
by ikegami
in thread problem using foreach and each with hash ref
by vinoth.ree
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |