in reply to Re: list assignment and undef (range returns non-temps)
in thread list assignment and undef
I don't understand WHY? either, I didn't think that map{} could modify an input, but evidently that is true when the $_ var is modified. This modified input apparently is used on subsequent use of the map{}.
My testing raises more questions than it provides answers, but one thing is that ("a","b","c","d") is different than ('a'..'d').
I changed to a,b,c for input instead of 1,2,3 during testing to differentiate the "for (1..2)" from the map's 1,2.
Anyway I hope looking at this test will stimulate other Monk brain cells!
#!/usr/bin/perl -w use strict; $| =1; #autoflush on (sequence STDERR STDOUT timewise) foreach my $z (1..3) { my @a = map{ $_++} ('a'..'d'); print "z=$z variable a=@a\n"; } #prints #z=1 variable a=a b c d #z=2 variable a=b c d e #z=3 variable a=c d e f foreach my $z (1..3) { #for some reason this modifies the input to the map # my @a = map{ $_++} ("a","b","c","d"); #this works differently....ie, like the 2nd case in post! # my @a = map{my $x = $_; # $x++;} ("a","b","c","d"); print "z=$z variable a=@a\n"; } #prints #Modification of a read-only value attempted at #C:\TEMP\perl11.pl line 18.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^3: list assignment and undef (range returns non-temps)
by ikegami (Patriarch) on Aug 26, 2009 at 16:54 UTC | |
by Marshall (Canon) on Aug 26, 2009 at 19:58 UTC |