> I haven't seen details in an Apocalypse, but Damian's
> Perl 6 overview has a bit about it. The Apocalypse
> specifically mentions *compile-time* scope management,
> but Damian is, uh, Damian. (DWIMery obviously. ;)
Hmmmmmm.
It would seem *very* odd to allow every symbol table *except*
%MY:: to be accessed at run-time.
> Is stuff like:
>
> %MY::{'$lexical_var'} = \$other_var;
>
> supposed to be a compile-time or run-time feature?
Run-time.
> Modifying the caller's environment:
>
> $lexscope = caller().{MY};
> $lexscope{'&die'} = &die_hard;
>
> is especially annoying because it means that I can't
> trust lexical variables anymore.
You can't trust them now.
Between source filters and Inline I can do pretty much whatever I like
to your lexicals without your knowledge. ;-)
> The one good thing about Damian's caller() example is that it
> appears in an import() function. That implies compile-time, but
> isn't as clear as Larry's Apocalypse.
I would envisage that mucking about with symbol tables would be no more
common in Perl 6 than it is in Perl 5. But I certainly wouldn't want to
restrict the ability to do so.
How am I expected to produce fresh wonders if you won't let me warp the
(new) laws of the Perl universe to my needs?
;-)
Damian