On subroutine return, any return values are copied. [emphasis mine]
D'oh! Thank you for the enlightenment on a Friday afternoon ;-)
Update: Yep:
$ perl -wMstrict *a = \substr(undef,0); # alias via glob $b = $a; # copy $a = 'x'; # assignment __END__ Use of uninitialized value in scalar assignment at - line 2. Modification of a read-only value attempted at - line 3.
And just like above, on Perls <5.16 that dies with "Modification of a read-only value attempted at - line 1." (instead of line 3). So I should probably call the commit I referenced a bugfix! :-)
Additional updates: Expanded the code example from the original version and added (and edited) the last paragraph.
In reply to Re^3: "uninitialized value in subroutine exit" warning from CGI.pm (updated)
by haukex
in thread "uninitialized value in subroutine exit" warning from CGI.pm
by dwmcewan
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |