[perl] Perl에서 루프를 끊으려면 어떻게해야합니까?

루프 break에서 명령문 을 사용하려고하는데 forPerl 코드에서 엄격한 서브를 사용하고 있기 때문에 오류가 발생합니다.

./final.pl 라인 154에서 “strict subs”를 사용하는 동안 Bareword “break”는 사용할 수 없습니다.

이것에 대한 해결책이 있습니까 (엄격한 잠수함을 비활성화하는 것 외에)?

내 코드의 형식은 다음과 같습니다.

for my $entry (@array){
    if ($string eq "text"){
         break;
    }
}



답변

아, 찾았 어 당신 은 휴식 대신 마지막을 사용합니다

for my $entry (@array){
    if ($string eq "text"){
         last;
    }
}


답변

추가 데이터 (질문이 더있는 경우) :

FOO: {
       for my $i ( @listone ){
          for my $j ( @listtwo ){
                 if ( cond( $i,$j ) ){

                    last FOO;  # --->
                                   # |
                 }                 # |
          }                        # |
       }                           # |
 } # <-------------------------------


답변

간단히 last여기에서 작동합니다.

for my $entry (@array){
    if ($string eq "text"){
         last;
    }
}

중첩 루프가 있으면 last가장 안쪽 루프에서 빠져 나옵니다. 이 경우 라벨을 사용하십시오.

LBL_SCORE: {
    for my $entry1 (@array1) {
        for my $entry2 (@array2) {
            if ($entry1 eq $entry2) { # Or any condition
                last LBL_SCORE;
            }
        }
    }
 }

주어진 last문장은 컴파일러가 두 루프에서 나오도록 만듭니다. 루프 수에 관계없이 동일한 작업을 수행 할 수 있으며 어디에서나 레이블을 수정할 수 있습니다.


답변

큰 반복에서는 인터럽트를 사용하는 것이 좋습니다. 그냥 눌러 Ctrl+는 C종료합니다 :

my $exitflag = 0;
$SIG{INT} = sub { $exitflag=1 };

while(!$exitflag) {
    # Do your stuff
}


답변