use strict; use warnings; BEGIN { package New::MyModule; *Old::MyModule:: = \*New::MyModule::; sub foo { print @_ } 1; } New::MyModule::foo("new\n"); Old::MyModule::foo("old\n");