package My;
print "Loading...\n";
sub Run { print "Running\n" }
####
use My;
delete $INC{"My.pm"};
undef &My::Run; # Why do this?!
delete $My::{Run};
require My;
eval "My::Run()";
My::Run();
##
##
Loading...
Loading...
Running
Undefined subroutine &My::Run called at -e line 1.
##
##
use My;
delete $INC{"My.pm"};
delete $My::{Run};
require My;
eval "My::Run()";
My::Run();
##
##
Loading...
Loading...
Running
Running
##
##
use My;
; # NEW
delete $INC{"My.pm"};
delete $My::{Run};
require My;
eval "My::Run()";
My::Run();
##
##
Loading...
Loading...
Running again
Running
##
##
Loading...
Loading...
Running again