# No Namespace Confusion! $\="\n"; sub inner { print "global_inner" } inner(); sub whatever { inner() } sub outer { { package outer; local *inner=sub {print "inner_of_outer"}; inner(); } whatever(); } outer(); __END__ global_inner inner_of_outer global_inner #### # No Memory Leak! $\="\n"; my $inner=sub { print "global_inner" }; $inner->(); sub whatever { $inner->() } { my $inner; sub outer { $inner=sub {print "inner_of_outer"}; $inner->(); whatever(); } } outer(); __END__ global_inner inner_of_outer global_inner