Yes, provided everything in your program (and its modules)
use
die instead of printing to STDERR. (Well, even
then there are ways, but I won't go into them now).
What you need to do is use a die handler. Here's
a complete program that logs errors to a file:
#!/opt/perl/bin/perl
use warnings 'all';
use strict;
{ my ($fh, $logfile);
INIT {
$logfile = "/var/log/whatever/errors";
open $fh => ">> $logfile" or die "Failed to open $logfile: $!\
+n";
$SIG {__DIE__} = sub {
print $fh @_;
print $fh "\n" unless $_ [-1] =~ /\n\z/;
};
}
END {
$fh and (close $fh or warn "Failed to close $logfile: $!\n");
}
}
print "Hello, world\n";
die "Meep, meep!";
print "I should be dead....\n";
__END__
-- Abigail