In (re?)examining the Apocalypses, I've found something that confuses me a
bit. A2 refers to C<MY> as a "pseudopackage" and says:
__LINE__ becomes MY.line
__FILE__ " MY.file
There is also Apocalypsal reference to C<%MY> as a name for the current
lexical symbol table.
First:
1. Is there any technical connection between C<MY> and C<%MY>?
I don't think there has to be. (Though I suppose you could
play entertaining tricks by manipulating C<%MY{MY}>.)
With regard to C<MY>:
2. What are "line" and "file"? Properties? Class variables?
(Probably not class variables since C<MY> is not called a class.)
And with regard to C<%MY>: Each function in Perl 5 has a single PAD that
could correspond to C<%MY>, except that PAD entries are indexed by a
combination of name and statement range. So:
3. Is C<%MY> intended to reflect the PAD?
3a. If so, how can one distinguish among the e.g. many C<my $foo>
variables declared within the current function?
3b. If not, how are lexical adjustments to C<%MY> unwound? Or are
they? If they're not, I can actually see the idea that could be
part of the base utility of C<%MY>.
3b1. But if they're not unwound, then the changes that *are* unwound
don't live in C<%MY>! For example:
if foo() { my $x = 1; print $x }
if bar() { my $x = 2; print $x }
The comings and goings of C<$x> in this code can't be
represented in C<%MY> (unless answer #3 above is "yes",
in which case this branch of questions is void).
Larry? Damian? Allison? ("Chief? McCloud?")
--
Chip Salzenberg - a.k.a. - <[EMAIL PROTECTED]>
"It furthers one to have somewhere to go."