package Devel::Timings; # or maybe B::Timings, so you can load it with -MO=Timings... my %loading; BEGIN{ unshift @INC, sub{ my ($self,$module) = @_; return if $loading{$m}; # reentrancy guard local $loading{$module} = $module; warn localtime().qq[ $module loading\n]; require $module; warn localtime().qq[ $module done.\n]; } }