If you want to automatically run Devel::TraceUse inside every script on a server, do this...
Run this to find out where to create this file:
perl -V:usesitecustomize -V:sitelib
Then paste this into into $Config{sitelib}/sitecustomize.pl:
# This runs Devel::TraceUse in EVERY perl script on this server, automatically.
# Log files will be written to /var/tmp/Devel::TraceUse/.
# ---- configuration varables ----
# Record a separate log file for each pid? (true/false)
my $CONFIG__PER_PID = 0;
# Only record log files for one script? (blank to record for all scripts)
my $CONFIG__ONLY_ONE_SCRIPT = '/usr/bin/blah';
use File::Spec::Functions;
my $DevelTraceUse_log;
my $zero; # $0 but an absolute path
BEGIN {
mkdir '/var/tmp/Devel::TraceUse/';
chmod 0777, '/var/tmp/Devel::TraceUse/'; # make sure scripts under other users can write to it
$zero = File::Spec::Functions::rel2abs($0);
$DevelTraceUse_log = "$zero.user--" . getpwuid($<) . ".log";
$DevelTraceUse_log =~ s#/#=#g;
$DevelTraceUse_log = "/var/tmp/Devel::TraceUse/$DevelTraceUse_log";
# option to record a separate log file per pid
if ($CONFIG__PER_PID) {
$DevelTraceUse_log =~ s/\.log$/.pid--$$.log/;
}
# mute the "Use -d:TraceUse for more accurate information." message
$^P = 0x08;
# Handle the situation where scripts are almost always running, and the
# most you can do is restart them, leading to an otherwise-constantly
# zero file-size for the log.
if (-e $DevelTraceUse_log && -s $DevelTraceUse_log > 0) {
rename $DevelTraceUse_log, "$DevelTraceUse_log.old";
}
}
use if (!$CONFIG__ONLY_ONE_SCRIPT || $zero eq $CONFIG__ONLY_ONE_SCRIPT),
"Devel::TraceUse" => "output:$DevelTraceUse_log";
# make sure that Devel::TraceUse gets called, even when the script dies
BEGIN {
if ($INC{'Devel/TraceUse.pm'}) { # in case $ONLY_ONE_SCRIPT is specified
$SIG{__DIE__} = sub {
# make sure we're not inside an eval
return if [caller(1)]->[3] eq '(eval)' || ${^GLOBAL_PHASE} eq 'START' || $^S;
Devel::TraceUse::dump_result();
};
}
}
This will automatically create log files in /var/tmp/Devel::TraceUse/.