my $package_method = 'Foo::Bar::baz'; my $orig = \&($package_method}; no warnings; *{$package_method} = sub { pre(); $orig->(@_); post() }; #### package Foo::Bar; sub baz { print "I am the original!\n" } package main; sub Foo::Bar::baz { print "I am the new baz!\n" } Foo::Bar::baz();