Hi Meir,
On Tue, 23 Jul 2013 19:03:59 +0300
Meir Guttman <[email protected]> wrote:
> Thanks folks for your help!
> 4) My understanding is that 'foreach' is just an alias for
> 'each'. Am I wrong?
>
No, “foreach” and “for” are aliases. “each()” is different and should be used
with while:
[SHELL]
shlomif@telaviv1:~$ cat each-example.pl
#!/usr/bin/perl
use strict;
use warnings;
my %people =
(
'George' => 'Washington',
'James' => 'Cooke',
'Benjamin' => 'Franklin',
);
while (my ($key, $value) = each(%people))
{
print "Key=$key Value=$value\n";
}
shlomif@telaviv1:~$ perl each-example.pl
Key=James Value=Cooke
Key=Benjamin Value=Franklin
Key=George Value=Washington
shlomif@telaviv1:~$
[/SHELL]
On more recent versions of perl, each can also be used on arrays to retrieve
the index and value repeatedly.
Regards,
Shlomi Fish
> Regards
> Meir
>
>
> -----Original Message-----
> From: [email protected] [mailto:[email protected]] On Behalf Of
> Shlomi Fish Sent: שבת 20 יולי 2013 18:33
> To: Perl in Israel
> Subject: Re: [Israel.pm] Swapping the key order of a 2D hash
>
> Hi Meir,
>
> On Sat, 20 Jul 2013 15:33:06 +0300
> Meir Guttman <[email protected]> wrote:
>
> > Hello Perlers,
> > Sometimes I would like to swap the order of the two keys of a
> > TWO-DIMENTIONAL hash. I could of course do it in a straight forward way as:
> > my %original;
> > my %swapped;
> > foreach my $major_key (keys %original){
> > foreach my $minor_key (keys %original{$major_key}){
> > $swapped{$minor_key}{$major_key} = $original{$major_key}{$minor_key};
> > }
> > }
> > Simple enough!
> > I wonder though how can I use 'map' in such a case, or can I?
>
> I can't think of a good and efficient way to do it using 'map' alone, because
> you swap the order of the nestings. You can write a subroutine that accepts
> two hash references and does the swapping for you like you demonstrated.
>
> BTW, you can save a little by doing «my $orig_major_val =
> $original{$major_key}» or perhaps by using each() instead of «foreach ..
> keys» (though I was told each() is not always receommended.
>
> Regards,
>
> Shlomi Fish
>
> > Or is there a utility for that?
> > I do it a lot, and performance matters...
> > Meir
> >
> > _______________________________________________
> > Perl mailing list
> > [email protected]
> > http://mail.perl.org.il/mailman/listinfo/perl
>
>
>
> --
> -----------------------------------------------------------------
> Shlomi Fish http://www.shlomifish.org/
> Chuck Norris/etc. Facts - http://www.shlomifish.org/humour/bits/facts/
>
> Katie: in case you have any interest in me, I should note that I have a
> policy against getting involved with people who are 4 times my senior or
> more. — http://www.shlomifish.org/humour/Star-Trek/We-the-Living-Dead/
>
> Please reply to list if it's a mailing list post - http://shlom.in/reply .
> _______________________________________________
> Perl mailing list
> [email protected]
> http://mail.perl.org.il/mailman/listinfo/perl
>
> -----
> No virus found in this message.
> Checked by AVG - www.avg.com
> Version: 2013.0.3349 / Virus Database: 3204/6506 - Release Date: 07/20/13
>
> _______________________________________________
> Perl mailing list
> [email protected]
> http://mail.perl.org.il/mailman/listinfo/perl
--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
List of Portability Libraries - http://shlom.in/port-libs
But if you’re writing [open source software] for the world, you have to listen
to your customers — this doesn’t change just because they’re not paying you in
money.
— Eric S. Raymond in The Cathedral and the Bazaar
Please reply to list if it's a mailing list post - http://shlom.in/reply .
_______________________________________________
Perl mailing list
[email protected]
http://mail.perl.org.il/mailman/listinfo/perl