$SIG{__DIE__} = sub { my $error = shift; my $i = 0; my $caller = ''; while (my (undef,$file,$line,$sub) = caller($i++)) { $caller .= "Line $line of file $file called $sub\n"; } my $from_address = "blah@blah.com"; my $mailer = MIME::Lite->new( 'From' => $from_address, 'To' => $ENV{SERVER_ADMIN}, 'Subject' => 'ERROR on '. "$ENV{'SERVER_NAME'}", 'Data' => "When: ". scalar(localtime(time())). "\n\n". "Program: $ENV{SCRIPT_NAME}\n\n". "Error:\n$error\n". "Call Trace:\n$caller\n". "Environment Variables:\n". join("\n", map("$_ = $ENV{$_}", keys(%ENV))) ); $mailer->send_by_sendmail(SetSender => 1); }