On Thursday 11 July 2002 11:47 am, Chip Salzenberg wrote: > According to Dan Sugalski: > > At 9:50 PM -0400 7/9/02, Chip Salzenberg wrote: > > > 3a. If so, how can one distinguish among the e.g. many C<my $foo> > > > variables declared within the current function? > > > > One pad per block, rather than per sub. > > I just remembered why I thought that woundn't work: BEGIN is a block. > > my $x = 1; > BEGIN { %MY::{'$y'} = \$x } > print $y;
Even worse, you should be able to modify lexicals even outside your scope. sub violate_me { caller(1).MY{'$y'} := caller(1).MY{'$x'}; # hypothetical syntax } { my $x = 1; my $y; # Might be able to BEGIN { violate_me() } instead violate_me(); print $y; } Ashley Winters -- When you do the community's rewrite, try to remember most of us are idiots.