Kin*_*oul 1 variables perl whois return
在下面的代码示例中,我试图获取一个whois语句.它偶尔会抛出超时异常.从PerlDoc开始,它说如果$Net::Whois::Raw::CHECK_FAIL = 1;设置为1then那么它应该返回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);
};
}
}
Run Code Online (Sandbox Code Playgroud)
==进行数值比较.如果不是,它的操作数被强制转换为数字.==在这里使用是不合适的.要检查是否定义了标量,请使用defined.
my $domain_info;
while (1) {
$domain_info = eval { whois($domainName) };
last if defined($domain_info);
sleep(10);
}
Run Code Online (Sandbox Code Playgroud)