use strict; use warnings; $\ = "\n"; sub outer2 { local *inner = sub { print "inner_of_outer2" }; inner(); } sub outer1 { local *inner = sub { print "inner_of_outer1" }; inner(); outer2(); } outer1(); #### inner_of_outer1 Subroutine main::inner redefined at script.pl line 7. inner_of_outer2