use Sub::Lexical; ## can't nest package level subs sub foo { my $foovar = "in foo here\n"; my sub bar { my $barvar = "in bar here\n"; print "\$foovar = $foovar"; my sub baz { my $bazvar = "in baz here\n"; print "\$barvar = $barvar"; my sub quux { my $quuxvar = "in quux here\n"; print "\$bazvar = $bazvar"; my sub ooh_this_is_deep { my $ooh_this_is_deepvar = "in deep here\n"; print "\$otidv = $ooh_this_is_deepvar"; } ooh_this_is_deep(); } # ooh_this_is_deep falls outta scope here quux(); } # quux falls outta scope here baz(); } # baz falls outta scope here bar(); } # bar falls outta scope here foo(); __output__ $foovar = in foo here $barvar = in bar here $bazvar = in baz here $otidv = in deep here