package amIBeingUsed; # in amIBeingUsed.pm if(defined( ${ caller()."::RUNTIME_OK" } )) { # the flag is set print "what took you so long to call me?"; } else { # still compiling print "eurgh, i feel so cheap!"; } sub import { print " slap!!!\n"; } 1; #### use strict; my $module = "amIBeingUsed"; our $RUNTIME_OK = 1; # possible scenarios use amIBeingUsed; # "eurgh, i feel so cheap! slap!!!" eval "use $module"; # "what took you so long to call me? slap!!!" require amIBeingUsed; # "what took you so long to call me?" eval "require $module"; # "what took you so long to call me?"