pad.c AOK "my" variable %s masks earlier declaration in same scope my $x; my $x ; Variable "%s" will not stay shared sub x { my $x; sub y { sub { $x } } } sub x { my $x; sub y { $x } } "our" variable %s redeclared (Did you mean "local" instead of "our"?) our $x; { our $x; } %s never introduced [pad_leavemy] TODO __END__ # pad.c use warnings 'misc' ; my $x ; my $x ; my $y = my $y ; no warnings 'misc' ; my $x ; my $y ; EXPECT "my" variable $x masks earlier declaration in same scope at - line 4. "my" variable $y masks earlier declaration in same statement at - line 5. ######## # pad.c use warnings 'closure' ; sub x { my $x; sub y { $x } } EXPECT Variable "$x" will not stay shared at - line 7. ######## # pad.c no warnings 'closure' ; sub x { my $x; sub y { $x } } EXPECT ######## # pad.c use warnings 'closure' ; sub x { my $x; sub y { sub { $x } } } EXPECT Variable "$x" will not stay shared at - line 6. ######## # pad.c use warnings 'closure' ; sub x { my $x; sub { $x; sub y { $x } }->(); } EXPECT Variable "$x" will not stay shared at - line 9. ######## # pad.c use warnings 'closure' ; my $x; sub { $x; sub f { sub { $x }->(); } }->(); EXPECT ######## # pad.c use warnings 'closure' ; sub { my $x; sub f { $x } }->(); EXPECT Variable "$x" is not available at - line 5. ######## # pad.c use warnings 'closure' ; sub { my $x; eval 'sub f { $x }'; }->(); EXPECT ######## # pad.c use warnings 'closure' ; sub { my $x; sub f { eval '$x' } }->(); f(); EXPECT Variable "$x" is not available at (eval 1) line 2. ######## # pad.c use warnings 'closure' ; sub x { our $x; sub y { $x } } EXPECT ######## # pad.c # see bugid 1754 use warnings 'closure' ; sub f { my $x; sub { eval '$x' }; } f()->(); EXPECT Variable "$x" is not available at (eval 1) line 2. ######## # pad.c no warnings 'closure' ; sub x { my $x; sub y { sub { $x } } } EXPECT ######## use warnings 'misc' ; our $x; { our $x; } EXPECT "our" variable $x redeclared at - line 4. (Did you mean "local" instead of "our"?)