#use strict; # debugging only
use 5.003_90; # ->can, for my $var
-$autouse::VERSION = '1.03';
+$autouse::VERSION = '1.05';
$autouse::DEBUG ||= 0;
my $load_sub = sub {
unless ($INC{$pm}) {
- eval {require $pm};
- die if $@;
+ require $pm;
vet_import $module;
}
no warnings 'redefine';
};
if (defined $proto) {
- *$closure_import_func = eval "sub ($proto) { &\$load_sub }";
+ *$closure_import_func = eval "sub ($proto) { goto &\$load_sub }"
+ || die;
} else {
*$closure_import_func = $load_sub;
}
sub vet_import ($) {
my $module = shift;
if (my $import = $module->can('import')) {
- croak "autoused module has unique import() method"
+ croak "autoused module $module has unique import() method"
unless defined(&Exporter::import)
- && $import == \&Exporter::import;
+ && ($import == \&Exporter::import ||
+ $import == \&UNIVERSAL::import)
}
}