in reply to Re^2: list assignment and undef (range returns non-temps)
in thread list assignment and undef

I didn't think that map{} could modify an input, but evidently that is true when the $_ var is modified.

It's clearly documented: "Note that $_ is an alias to the list value, so it can be used to modify the elements of the LIST." Just like foreach loops.

Many people use map { s/// }, but that clobbers the input in the process. List::MoreUtils's apply and Algorithm::Loops's Filter solve this problem, and so does

s/// for my @out = @in;

but one thing is that ("a","b","c","d") is different than ('a'..'d').

Indeed. A constant range in list context is flattened into an array.

$ perl -MO=Concise,-exec -e'print 1..3' 1 <0> enter 2 <;> nextstate(main 1 -e:1) v 3 <0> pushmark s 4 <$> const[AV ] s <----- 5 <1> rv2av lKP/1 6 <@> print vK 7 <@> leave[1 ref] vKP/REFC -e syntax OK

As previously mentioned, the problem is that the members of the array aren't read-only.

Replies are listed 'Best First'.
Re^4: list assignment and undef (range returns non-temps)
by Marshall (Canon) on Aug 26, 2009 at 19:58 UTC
    Great posts by ikegami!

    Some intervening posts happened during my "thinking phase".
    I don't think my post was "wasted" as it demo's this behavior and I learned something by doing it.