Sorry, merlyn, but the second example *is* turning a list
into another list. map is very capable of mapping 1-to-n
relations, ie, every element on the right will produce more
than one element on the right.
If I read your statement correctly ( and I may not have ), the first
use of map isn't correct
my @first = qw/ one-1 two-2 three-3/;
my %hash = map { split /-/ } @first; # Which works for me btw
print map { "$_ => $hash{$_}\n" } keys %hash;
But this usage is correct
my @first = qw/ one-1 two-2 three-3/;
my @second = map { split /-/ } @first;
my %hash = @second; # Legal code, isn't it?
print map { "$_ => $hash{$_}\n" } keys %hash;
How else is map supposed to make @first into @second except
by performing an action on every element of @first?
I am not arguing that a foreach wouldn't be appropriate here.
If that is what works, by all means use it. But if I am not
supposed to use map when I want an action on every element of
an array, doesn't it make more sense to say
@second = @first;
because that seems to be the only option you have left me
with this statement.
Would you be kind enough to expand on your answer so I can
figure out what I missed?
TIA
mikfire |