我正在設定決議器使用的名稱服務器Net::DNS
my $resolver = Net::DNS::Resolver->new();
$resolver->nameservers( $somenameserver );
如果引數錯誤,則在標準錯誤上列印錯誤。例如,
unresolvable name: uuu.aaa.eee at check_rbl line 145.
并且函式回傳 0,如果一切正常,則回傳 1。
到目前為止,一切都很好。
我想抑制標準錯誤的錯誤訊息并執行自定義操作。
如何避免自動錯誤訊息?以及我如何得到錯誤資訊?
uj5u.com熱心網友回復:
你可以用Capture::Tiny
這個。
順便說一句->nameservers()
,回傳串列背景關系中的所有有效名稱服務器。如果傳遞的所有名稱服務器都無效,則回傳一個空串列。
如果更改@servers
為標量值$server
,則會得到undef
.
use Net::DNS::Resolver;
use Capture::Tiny qw(capture);
my $res = Net::DNS::Resolver->new();
my ($stdout, $stderr, @servers) = capture {
$res->nameservers("8.8.8.8a");
};
if ( @servers == 0 ) {
printf "Error found: %s\n", $stderr;
}
else {
print "Everything fine.\n";
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/506249.html