in reply to Re: Re^4: Lexical pad / attribute confusion
in thread Lexical pad / attribute confusion
Actually I get different results. On 5.6.1 (win32) lexicals declared after INIT are not visible from INIT.
My results on 5.8 match yours if I run your code. Not surprising since your code is different from mine :-)
dump_lex climbs up the callstack to the enclosing file lexical scope. So it would be the same sort of thing as doing this:
use warnings; use strict; INIT { use Data::Dumper; use PadWalker qw (peek_my peek_sub); print Dumper(peek_my(1)); } my $foo = 'lee'; my $bar = "Bar"; print Dumper(peek_my(0)); { my @foo = (1..3) }; { my @bar = (9..12) }; print Dumper(peek_my(0));
Which gives (on 5.8)
$VAR1 = { '$foo' => \undef, '@bar' => [], '@foo' => [], '$bar' => \undef }; $VAR1 = { '$foo' => \'lee', '$bar' => \'Bar' }; $VAR1 = { '$foo' => \'lee', '$bar' => \'Bar' };
Again, INIT can see everything, but nothing can be seen before/after the blocks are executed at the top level. I still don't understand what's happening here :-)
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: Re^6: Lexical pad / attribute confusion
by shotgunefx (Parson) on Dec 22, 2002 at 01:44 UTC | |
by adrianh (Chancellor) on Dec 22, 2002 at 11:26 UTC | |
by shotgunefx (Parson) on Dec 22, 2002 at 21:18 UTC |