俺はお前を盗んで調教したいんだよって時の方法

Original.pm

package Original;

use warnings;
use strict;

sub password { 'hogehoge'; }
sub name { 'angelos'; }


1;

Stealer.pm

package Stealer;

use warnings;
use strict;
use Class::Inspector;
use Data::Dumper;
use Sub::Install;
use UNIVERSAL::require;

sub steal_modules_from {
    my $class   = shift;
    my $moniker = shift;
    $moniker->require;
    my $methods = Class::Inspector->functions( $moniker );

    for my $method (@$methods) {
        Sub::Install::install_sub(
                {   from => $moniker ,
                code => $method,
                }
                );
    }

}

1;

Fixser.pm

package Fixser;

use warnings;
use strict;
use base qw/Stealer/;
use Class::Method::Modifiers::Fast;

__PACKAGE__->steal_modules_from('Original');

around 'name' => sub {
    my $orig = shift;
    my $res = $orig->(@_);
    return $res . " is fun\n";
};

around 'password' => sub {
    my $orig = shift;
    my $res = $orig->(@_);
    return "********\n";
};

1;

work.pl

#!/usr/bin/perl 

use warnings;
use strict;
use Fixser;

print Fixser->name();
print Fixser->password();

結果

angelos is fun
********