in reply to Re^3: Reassigning $_ in loop doesn't stick
in thread Reassigning $_ in loop doesn't stick

The post to which you replied discusses whether map returns aliases or not. This is not related to whether map operates on an alias when executing the code block.

What version of perl is this and why doesn't it agree with the documentation

The docs (for 5.10.0) specify that grep returns aliases, but they are silent on whether map returns aliases or not.

Confirmed with 5.10.0 that map aliases not copies

Your snippet discards the return value of map without checking whether it's an alias or not.

Replies are listed 'Best First'.
Re^5: Reassigning $_ in loop doesn't stick
by Limbic~Region (Chancellor) on Jan 21, 2009 at 23:58 UTC
    ikegami,
    I thought this might be what you meant on my way home from work. I just can't think of a good reason for it. It would be quite interesting if it worked in assignment (my $alias_to_foo = grep $_, $foo;) but it doesn't. So what benefit is there that the return value is an alias into the original list?

    Cheers - L~R

      • Efficiency (speed and memory).
      • You can pass it to for, a function, etc to be modified.
      • Use the return as an lvalue. Well, you can take a reference to it at least.
      • Simplicity. It takes extra work to make the copy.

      Mainly, I figure it just happened to work that way. And since there's no reason to change it, they decided to document it.