Я использую eval
с sendmail (так как он почти всегда установлен):
eval
{
# do something
};
if ( $@ )
{
my $ip = `ifconfig`
or die "Can't ifconfig: $!\n";
my @now = localtime;
my $now = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $now[5]+1900, $now[4]+1, $now[3], $now[2], $now[1], $now[0] );
open ( SENDMAIL, "|/usr/sbin/sendmail -oi -t -fyou\@yourdomain.com" )
or die "Can't fork for sendmail: $!\n";
print SENDMAIL << "EOF";
To: Your Name <you\@yourdomain.com>
Subject: ERROR: Exception
$now
$@
$ip
EOF
close ( SENDMAIL )
or warn "Sendmail didn't close nicely";
};
Это исправит ваш бесконечный цикл, но не отправит электронное письмо в том маловероятном случае, когда блок электронной почты умрет первым. Я думаю, что @jcomeau_ictx получает пуленепробиваемую награду.
Я также понятия не имею, как это сделать в Windows. Надеюсь, это поможет!