On 4/25/07, John W. Krahn <[EMAIL PROTECTED]> wrote:
Seanie wrote:
> Rob Dixon wrote:
>>> map(s/$find/$replace/, @arr);
>> Haha yes you can, but if you want to write nasty code go for
>> grep s/$find/$replace/, @arr;
>> which also works.
>
> True, but grep implies "find stuff", while map implies "do stuff", so your
> nasty code is way, way, nastier than mine - it masks the intention.
>
> Maybe using map in void context is deep-level wrongness, but it'd be nice if
> somebody would explain WHY, instead of posting "don't do it" one-liners.
perldoc perl581delta
[ snip ]
Miscellaneous Enhancements
"map" in void context is no longer expensive. "map" is now context
aware, and will not construct a list if called in void context.
So it is not really "wrong" anymore (for certain values of "wrongness".)
John
--
Perl isn't a toolbox, but a small machine shop where you can special-order
certain sorts of tools at low cost and in short order. -- Larry Wall
It is no longer inefficient; however, it is still an abuse of map and
longer than the for loop version. It is hard to defend the use of map
in a void context.
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/