package reload; use strict; use warnings; sub reload { my ($PM) = @_ or return; $PM =~ s!::!/!g; $PM .= ".pm"; delete $INC{$PM}; no strict 'refs'; no warnings 'redefine'; my $warnings = \&warnings::import; local *warnings::import = sub { &{$warnings}; unimport warnings "redefine"; }; eval { require $PM }; } 1;