package Maker; sub make { my $pkg = caller; my $sub = eval <<" __EOI__" or die $@; package $pkg; sub { my \$self = shift; print "w00t\\n"; \$self->SUPER::go; } __EOI__ no strict 'refs'; *{ $pkg . '::go' } = $sub; } #### package Maker; sub make { my $pkg = caller; my $sub_body = <<' __EOI__'; sub { my $self = shift; print "w00t\n"; $self->SUPER::go; } __EOI__ my $sub = eval "package $pkg; $sub_body" or die $@; no strict 'refs'; *{ $pkg . '::go' } = $sub; }