http://qs1969.pair.com?node_id=11130774

LanX has asked for the wisdom of the Perl Monks concerning the following question:

Hi

PadWalker is great for identifying and manipulating closed over private variables declared with my.

But what about package variables declared with our?

What's the best way to do this?

Do I have to parse the optree or do we have a Pad for our-lexicals too?

little demo which only works for private vars

DB<170> sub outer { package BLA; my $my=42; our $our=666; sub { prin +t "$my,$our" } } DB<171> outer()->() 42,666 DB<172> use PadWalker qw(peek_sub closed_over) DB<173> x peek_sub(outer()) 0 HASH(0x39d8ec8) '$my' => SCALAR(0x39d8dd8) -> 42 DB<174> x closed_over(outer()) 0 HASH(0x39d98b8) '$my' => SCALAR(0x39d92e8) -> 42 1 HASH(0x39d9168) # <- What is that,BTW? 1 => SCALAR(0x39d92e8) -> REUSED_ADDRESS DB<175>

PS: I'm aware of peek_our(), it just only works from inside the sub.

Cheers Rolf
(addicted to the Perl Programming Language :)
Wikisyntax for the Monastery