Something has been changed, new magic in the localization of typeglobs. Because, even though I though get this pleasant result in 5.8.3, it's not at all what I get in 5.6.1:
$\ = "\n";
*t = sub{ print 42 }; *t = \'fred'; *t = [ 1,2,3];
print $];
{
local *t = sub { print 'changed' };
print join "\n", t(), $t, "@t";
};
results for 5.6.1 in
Possible unintended interpolation of @t in string at test.pl line 7.
Use of uninitialized value in join or string at test.pl line 7.
5.006001
changed
1
Thus: only the sub is set.
Compare that to the result for 5.8.3:
Possible unintended interpolation of @t in string at test.pl line 7.
Subroutine main::t redefined at test.pl line 6.
5.008003
changed
1
fred
1 2 3
|