in reply to Local Subroutines

It's fine form --
sub bar { print "global bar(@_)\n"; } sub foo { local *bar = sub { print "bar(@_)\n"; }; bar(1..3); } foo; bar;
But remember that these are dynamically-scoped.
update: missing semicolon.