use NEXT;
no strict 'refs';
*{$package . '::function'} = sub {
my $this = shift;
# do something
$this->NEXT::function(@_);
};
####
sub printcaller {
my $caller = (caller(1))[3];
print "$caller\n";
}
my $package = "testpackage";
*{$package.'::function'} = sub {
printcaller();
};
testpackage::function();
##
##
sub printcaller {
my $caller = (caller(1))[3];
print "$caller\n";
}
my $package = 'testpackage';
eval qq{
sub ${package}::function {
printcaller();
}
};
testpackage::function(); # Output: testpackage::function