sub foo { local *bar = sub { print "other bar\n"; }; print "foo calling quz\n"; quz(); } sub bar { print "bar\n"; } sub quz { print "quz calling bar\n"; bar(); } foo(); quz(); __END__ Subroutine main::bar redefined at - line 4. foo calling quz quz calling bar other bar quz calling bar bar