2013-05-29 1 views
1

은 그냥 양식 (큰 일을하는) 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를 이상 . 이 경우, 나는 (정상 느릅 나무) 약간의 펄 오류가 발생하고 스크립트 다이 : 나는 오류가 루프의 다음 항목으로 이동할 것이 아니라 발견되는 경우가 죽고 싶지 않아

'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 현재 사용 중)은, 일반적으로, 내가하고 싶은 것입니다 :

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

그러나 스크립트 : 내가 좋아하는 eval{ routine_might_die }; warn [email protected] if [email protected]; 일부 솔루션 및 몇 가지 방법을 시도

if(ANY_ERROR && LOOP_NOT_EMPTY) 
{ 
    DON'T DIE; 
    JUMP TO THE NEXT ELEMENT OF THE LOOP; 
} 

키 ps가 현재 사용중인 IP로 인해 첫 번째 오류로 죽어 가고 있습니다.

답변

5

eval을 다른 곳에 넣었습니다. 루프 내에서 오류를 catch하려면 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 예. 물론 당신 말이 맞아요, 지금 일하고 있어요. 슈퍼 빠른 답변을 주셔서 감사합니다. 좋은 하루 보내세요 =) –

관련 문제