in reply to Map: Thou Has't Confounded Me For The Last Time! (Referring To The Array You Are Assigning To In Map)

... This, however, doesn't parallel Perl's documentation. Am I doing something stupid? Is Perl's documentation wrong? Are we both wrong?
You're wrong because you're taking an analogy past its limits, ignoring documentation in the interim.
`perldoc -f map'
Evaluates the BLOCK or EXPR for each element of LIST (locally setting $_ to each element) and returns the list value composed of the results of each such evaluation...
%hash = map { getkey($_) => $_ } @array;
is just a funny way to write
%hash = (); foreach $_ (@array) { $hash{getkey($_)} = $_; }
The assignment operator (which is discussed through out the perl documentation) is waiting for map (a list operator) to return a list, before it can proceed with the assignment. To get
my %res = map { $_ => do { my $re; $re .= $translations{$_} for split //; $re; } if !$res{$_}; } @words;
to work as you intended , you need to change it to
my %res; my @res = map { $_ => do { my $re; $re .= $translations{$_} for split //; $re; } if !$res{$_}; } @words; %res = @res;
update: or even
my %res; %res = @_ =map { $_ => do { my $re; $re .= $translations{$_} for split //; $re; } if !$res{$_}; } @words;

MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
** The third rule of perl club is a statement of fact: pod is sexy.

Replies are listed 'Best First'.
Re: beware of funny ways
by Anonymous Monk on Feb 14, 2005 at 13:03 UTC
    I'm pretty sure neither of those solutions will work. As the OP stated, the problem is that map returns a list; you are assigning an array to that value. Thus,  %res or  @_ is not populated until the map returns the whole list (unless you've inserted some magic I'm unaware of.)
      Thus, %res or @_ is not populated until the map returns the whole list
      That's right, and I've said as much (is waiting for map (a list operator) to return a list).
      (unless you've inserted some magic I'm unaware of.)
      Nope, just being funny (which is inately magical).

      MJD says "you can't just make shit up and expect the computer to know what you mean, retardo!"
      I run a Win32 PPM repository for perl 5.6.x and 5.8.x -- I take requests (README).
      ** The third rule of perl club is a statement of fact: pod is sexy.