use X; #### BEGIN { require Module; Module->import( LIST ); } #### 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; } }