$ perl -le " use warnings; sub foo { warn 1 } foo(); { local *foo; eval q{sub foo { warn 2 }}; foo(); } foo(); " 1 at -e line 1. 2 at (eval 5) line 1. 1 at -e line 1.