On Tue, Jul 09, 2002 at 09:50:26PM -0400, Chip Salzenberg wrote:

Based on what I rememeber from the long threads about this,

>    3. Is C<%MY> intended to reflect the PAD?

loosely speaking yes.
> 
>     3a. If so, how can one distinguish among the e.g. many C<my $foo>
>         variables declared within the current function?

It was decreed that %MY only sees stuff in the inner-most lexical scope
(so the Perl6 version of a pad is 'bigger' than what %MY sees):

    {
        my $x = 1;
        {
            exists %MY::{'$x'};         # false
            print %MY::{'$x'};          # undef
            print $x;                   # 1

            %MY{'$x'} = 2;
            print %MY::{'$x'};          # 2
            print $x;                   # 2

            {
                exists %MY::{'$x'};     # false
                print %MY::{'$x'};      # undef
                print $x;               # 2
            }
                
        }
        exists %MY::{'$x'};             # true
        print %MY::{'$x'};              # 1
        print $x;                       # 1
    }



> 
>     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>.

I think the main intent of %MY:: is to allow import() to lexically affect
the caller, ie

    sub import {
        caller(1).MY{'&foo'} = sub { ... };
    }

(for some vague handwaving interpretation of caller() and MY)

Dave.

-- 
My get-up-and-go just got up and went.

Reply via email to