use Foo;
BEGIN {
require Foo;
Foo->import;
}
####
use MODULE qw(import list);
BEGIN {
require MODULE;
MODULE->import(import list);
}
####
use MODULE ();
BEGIN {
require MODULE;
}
####
require "lib/Foo.pm"; # no @INC searching!
####
sub require {
my ($filename) = @_;
if (exists $INC{$filename}) {
return 1 if $INC{$filename};
die "Compilation failed in require";
}
my ($realfilename,$result);
ITER: {
foreach $prefix (@INC) {
$realfilename = "$prefix/$filename";
if (-f $realfilename) {
$INC{$filename} = $realfilename;
$result = do $realfilename;
last ITER;
}
}
die "Can't find $filename in \@INC";
}
if ($@) {
$INC{$filename} = undef;
die $@;
} elsif (!$result) {
delete $INC{$filename};
die "$filename did not return true value";
} else {
return $result;
}
}