如何在 Perl 中 运行 whois 时测试 undef?
How to test for undef when running whois in Perl?
在下面的代码示例中,我试图获取 whois 声明。它时不时地抛出超时异常。从 PerlDoc 它说如果 $Net::Whois::Raw::CHECK_FAIL = 1;
设置为 1
那么它应该 return undef
。
我用 eval 封装了 whois,这样它就不会破坏脚本,然后我添加了一个 sleep
,然后我再次尝试获取 whois。但它会发出警告“...isn't numeric in numeric eq (==)
”。
所以,我再次取消 运行,当它到达 if
时,它仍然执行那里的代码,并抛出我上面提到的那个错误。当 undef
发生时,我如何安全地对其进行评估?
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Net::Whois::Raw;
#use Net::Whois::Parser;
use Data::Dumper;
$Net::Whois::Raw::OMIT_MSG = 2;
$Net::Whois::Raw::CHECK_FAIL = 1;
$Net::Whois::Raw::TIMEOUT = 30;
my $domainName = "google.com";
my $domainInfo;
while (1) {
eval {
$domain_info = whois($domainName);
};
if (undef == $domain_info) {
sleep (10);
eval {
$domain_info = whois($domainName);
};
}
}
在下面的代码示例中,我试图获取 whois 声明。它时不时地抛出超时异常。从 PerlDoc 它说如果 $Net::Whois::Raw::CHECK_FAIL = 1;
设置为 1
那么它应该 return undef
。
我用 eval 封装了 whois,这样它就不会破坏脚本,然后我添加了一个 sleep
,然后我再次尝试获取 whois。但它会发出警告“...isn't numeric in numeric eq (==)
”。
所以,我再次取消 运行,当它到达 if
时,它仍然执行那里的代码,并抛出我上面提到的那个错误。当 undef
发生时,我如何安全地对其进行评估?
#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use Net::Whois::Raw;
#use Net::Whois::Parser;
use Data::Dumper;
$Net::Whois::Raw::OMIT_MSG = 2;
$Net::Whois::Raw::CHECK_FAIL = 1;
$Net::Whois::Raw::TIMEOUT = 30;
my $domainName = "google.com";
my $domainInfo;
while (1) {
eval {
$domain_info = whois($domainName);
};
if (undef == $domain_info) {
sleep (10);
eval {
$domain_info = whois($domainName);
};
}
}