Boysenberry Payne wrote:
If you worried about @context persisting my @context ought to keep it local to the scope @context is declared in unless you register it as a global while manipulating it.

This is technically true, but confusing. Because the pushcontext() sub below refers to a variable declared in the enclosing scope, it will keep a private copy of that variable, and it will persist for the lifetime of the perl interpreter.

package MyMod1;
my @context = qw( test_mymod1 );
sub pushcontext {
    push @context @_;
}

package MyMod2;
my @context = qw( test_mymod2 );
MyMod1::pushcontext( @context );

Ought to end up having each @context being:

MyMod1:: $context[ 0 ] = "test_mymod1"
MyMod1:: $context[ 1 ] = "test_mymod2"
MyMod2:: $context[ 0 ] = "test_mymod2"

Yes, and calling MyMod1::pushcontext() again, even on a later request, will add to that, putting the new value in $context[2].

- Perrin

Reply via email to