in reply to Was my module used or required?

Some test code expanding on Jenda's suggestion, partially to satisfy my own curiosity. Interesting problem, hope this is of some help - its rough.
A runtime flag in caller() lets your module evaluate at what stage it is being compiled...
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;
...meanwhile, at the Bat Cave ...
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?"