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
In reply to PadWalker's closed_over - but for our variables? by LanX
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |