#!/usr/bin/perl
#
use strict;
use warnings;
use New::MyModule;
use Old::MyModule;
New::MyModule::printer();
Old::MyModule::printer();
####
package New::MyModule;
do 'New/MyModule.pl' or die "New/MyModule.pl: $!";
1;
####
package Old::MyModule;
do 'New/MyModule.pl' or die "New/MyModule.pl: $!";
1;
####
sub printer {
print "here we are in " . __PACKAGE__ . "\n";
}
1;
####
package New::MyModule;
sub printer {
print "here we are in " . __PACKAGE__ . "\n";
}
1;
####
package Old::MyModule;
my $contents;
foreach my $prefix (@INC) {
my $file = "$prefix/New/MyModule.pm";
if(-f $file) {
open(FILE, "<", "$file") or die "$file: $!";
$contents = do { local $/; };
close(FILE);
last;
}
}
die "Can't locate New::MyModule in \@INC (\@INC contains: @INC)." unless($contents);
$contents =~ s/package New::MyModule/package Old::MyModule/;
my $result = eval $contents;
die "$file: $@" if($@);
die "$file: did not end with a true value" unless($result);
1;