IT

Perl에서 루프를 해제하려면 어떻게해야합니까?

lottoking 2020. 3. 19. 08:30
반응형

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
}

참고 URL : https://stackoverflow.com/questions/303216/how-do-i-break-out-of-a-loop-in-perl

반응형