我刚刚完成了一个 Perl 脚本(效果很好),格式如下:
my @plages_IP = ('10.7.10.103' ,'10,121,10,7', '10.120.10.10');
foreach my $IP (@plages_IP)
{
DO ALL THE THING I WANT;
}
我的问题是,由于某种原因,我启动脚本时列表中的 1 个或多个 IP 可能很忙。在这种情况下,我得到一些 perl 错误(这是正常的)并且脚本死了:
'Error POSTing http://10,121,10,7/wcd/login.cgi: Can't connect to 10,121,10,7:80 (Bad hostname) at C:\Users\STAGEDVIR\Desktop\gnagna\Retrieve_Counter_C364_C224_C203.pl line 51.'
'Error POSTing http://10.64.10.3/wcd/login.cgi: Not Found at C:\Users\STAGEDVIR\Desktop\gnagna\Retrieve_Counter_C203.pl line 45.'
如果发现错误,我不希望它死掉,而是跳到循环的下一项;所有这些错误都意味着同一件事(IP 当前很忙),通常,我想做的是:
if(ANY_ERROR && LOOP_NOT_EMPTY)
{
DON'T DIE;
JUMP TO THE NEXT ELEMENT OF THE LOOP;
}
我尝试了一些解决方案eval{ routine_might_die }; warn $@ if $@;
和一些方法,例如:
unless($boolean_descripting_last_request->is_success)
{
print(STDERR "Currently busy $IP ! \n");
**next**;
}
但是由于 IP 当前忙,脚本一直在等待他发现的第一个错误。