У меня есть модуль, который должен выполнить некоторую проверку в блоке BEGIN. Это препятствует тому, чтобы пользователь видел бесполезное сообщение вниз по линии (во время фазы компиляции, замечено во втором, НАЧИНАЕТСЯ здесь).
Проблема в том, что если я умру внутри, НАЧИНАЕТСЯ сообщение, которое я выбрасываю
BEGIN failed--compilation aborted at
. Тем не менее, я предпочитаю от die
до exit 1
, так как тогда это можно будет отловить. Должен ли я просто использовать exit 1
или я могу что-то сделать для подавления этого дополнительного сообщения?
#!/usr/bin/env perl
use strict;
use warnings;
BEGIN {
my $message = "Useful message, helping the user prevent Horrible Death";
if ($ENV{AUTOMATED_TESTING}) {
# prevent CPANtesters from filling my mailbox
print $message;
exit 0;
} else {
## appends: BEGIN failed--compilation aborted at
## which obscures the useful message
die $message;
## this mechanism means that the error is not trappable
#print $message;
#exit 1;
}
}
BEGIN {
die "Horrible Death with useless message.";
}