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 |