5
我有一個模塊需要在BEGIN塊中進行一些檢查。這可以防止用戶看到一行無用的消息(在編譯階段,這裏在第二個BEGIN中看到)。禁止「BEGIN失敗 - 編譯中止」
問題是,如果我死在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.";
}
謝謝!現在我所得到的是: '在配置Alien :: GSL之前,某些需要的模塊缺失或必須升級。 這些模塊是:\t Sort :: Versions' –
我應該說,這就是我想要的! –