Definitely a nice hack, robin++ ... but it leaves a question open. Consider:
local *foo:
*foo = [qw (a b c)]; { local *foo = [qw(1 2 3)]; print "local \@{\*foo{ARRAY}} = qw(@{*foo{ARRAY}})\n"; print "local \@foo = qw(@foo)\n"; } print "global \@foo = qw(@foo)\n"; __END__ local @{*foo{ARRAY}} = qw(1 2 3) local @foo = qw(1 2 3) global @foo = qw(a b c)
my *foo:
*foo = [qw (a b c)]; { my *foo = [qw(1 2 3)]; print "my \@{\*foo{ARRAY}} = qw(@{*foo{ARRAY}})\n"; print "my \@foo = qw(@foo)\n"; } print "global \@foo = qw(@foo)\n"; __END__ my @{*foo{ARRAY}} = qw(1 2 3) my @foo = qw(a b c) global @foo = qw(a b c)
Hmm. The lexical glob is created ok, but other than with local, glob corresponding variables aren't treated as aliases to the typeglob entries in the current scope.
Now, should that happen? I think, it should; but such lookup should also warn about "masking an earlier @foo in the same scope".
What do you think?
--shmem
_($_=" "x(1<<5)."?\n".q·/)Oo. G°\ /
/\_¯/(q /
---------------------------- \__(m.====·.(_("always off the crowd"))."·
");sub _{s./.($e="'Itrs `mnsgdq Gdbj O`qkdq")=~y/"-y/#-z/;$e.e && print}
In reply to Re: Hacking perl
by shmem
in thread Hacking perl
by robin
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |