package MyBase;
use strict;
use warnings;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(bar);
sub FOO() {42}
sub bar {
return FOO();
}
1;
####
package MySub;
use strict;
use warnings;
sub _filter {
my $module = $_[1];
if ($module =~ m/^MyBase/) {
foreach my $dir (@INC[1..$#INC]) {
if (-e "$dir/MyBase.pm" && -f _) {
open FH, '<', "$Bin/lib/MyBase.pm" or die $!;
last;
}
}
die "Couldn't find MyBase.pm in @INC\n" unless defined *FH;
return
\'',
\*FH,
sub {
if (length $_) {
$_ =~ s/(sub FOO\(\)\s*\{)(\d+)(\})/${1}44${3}/;
return 1;
}
else {
return 0;
}
};
}
return ();
}
BEGIN {unshift @INC, \&_filter}
use MyBase;
use Exporter;
our @ISA = qw(Exporter);
our @EXPORT = qw(baz);
sub baz {
return bar();
}
1;
##
##
#!/usr/bin/env perl
use strict;
use warnings;
use FindBin qw($Bin);
use lib "$Bin/lib";
use MySub;
print baz(), "\n";