package Maker; sub make { my $pkg = caller; my $sub = sub { my $self = shift; print "w00t\n"; $self->SUPER::go; }; no strict 'refs'; *{ $pkg . '::go' } = $sub; } #### package Foo; sub go { print 42; } package Bar; use base 'Foo'; sub new { return bless { }, $_[0] } Maker->make; #### package main; my $o = Bar->new; $o->go; #### w00t Can't locate object method "go" via package "Maker" at mm.pl line 11.