2013-05-29 48 views
1

我完成了一個Perl腳本(這是做的很好)與形式:-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 [email protected] if [email protected];一些解決方案,像一些方法:

unless($boolean_descripting_last_request->is_success) 
{ 
    print(STDERR "Currently busy $IP ! \n"); 
    **next**; 
} 

但腳本記ps正在死於由於IP當前繁忙而發現的第一個錯誤。

回答

5

你把eval放在錯誤的地方。如果你想在你的循環中發現錯誤,把eval放在那裏。

my @plages_IP = ('10.7.10.103' ,'10,121,10,7', '10.120.10.10'); 

foreach my $IP (@plages_IP) { 
    eval { 
     # stuff that might die 
    }; 

    warn [email protected] if [email protected]; 
} 

不需要next因爲無論如何循環都會繼續。

+0

Awwww是啊。當然你是對的,它現在正在工作。非常感謝超級快速的回答,我很感激!祝你有個美好的一天=) –

相關問題