sub warningless_require_module { # * untested * use File::Spec; use Carp; my $module = shift; my @module = split /::/, $module; $module[-1] .= ".pm"; my $file; for (@INC) { $file = File::Spec->catfile($_,@module); last if -f $file; } if (!-f _) { die "Can't locate $file in \@INC (\@INC contains @INC)\n"; } my $res; { local $^W = 0; $res = do $file; } unless ($res) { die $@ if $@; croak "file didn't return a true value"; } $INC{File::Spec->catfile(@module)} = $file; { no strict 'refs'; foreach my $raw_name (keys %{$module."::"}) { my $name = $module."::".$raw_name; if (defined &{$name}) { my $sub = \&{$name}; *{$name} = sub { local $^W = 0; &$meth; }; } } } return $res; }