in reply to Dereferencing undef as an array: Bug or WAD?
lvalue vs rvalue. When an undefined value is dereferenced to be used as an lvalue, it gets autovivified.
>perl -Mstrict -wle"my $r; my @x; @x=@$r; print $r" Can't use an undefined value as an ARRAY reference at -e line 1. >perl -Mstrict -wle"my $r; my @x; @$r=@x; print $r" ARRAY(0x225280)
map appears to expect an lvalue, possibly because it aliases.
>perl -Mstrict -wle"my $r; my @x = map{ $_ } @{ $r }; print $r" ARRAY(0x225258)
More examples where aliasing is involved:
>perl -Mstrict -wle"my $r; my @x; for(@$r){} print $r" ARRAY(0x225280) >perl -Mstrict -wle"my $r; my @x; sub{}->(@$r); print $r" ARRAY(0x225280)
Update: Oops, fixed mention of rvalue where I meant lvalue. Re-ordered post for better readability. Added extra examples.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re^2: Dereferencing undef as an array: Bug or WAD?
by BrowserUk (Patriarch) on Jun 04, 2008 at 06:02 UTC |