package Log; sub new { my ($class) = shift; bless {}, $class; } sub write { print "write old\n"; } sub open { print "open old\n"; } sub close { print "close old\n"; } 1; package NewLog; sub import { for my $sub (qw(new write open)) { no strict 'refs'; *{'Log::'.$sub} = *{'NewLog::'.$sub}; } } sub new { my ($class) = shift; bless {}, $class; } sub write { print "write new\n"; } sub open { print "open new\n"; } 1; use Log; use NewLog; my $log = new Log; $log->open; $log->write; $log->close; #### open new write new close old