루프 break
에서 명령문 을 사용하려고하는데 for
Perl 코드에서 엄격한 서브를 사용하고 있기 때문에 오류가 발생합니다.
./final.pl 라인 154에서 “strict subs”를 사용하는 동안 Bareword “break”는 사용할 수 없습니다.
이것에 대한 해결책이 있습니까 (엄격한 잠수함을 비활성화하는 것 외에)?
내 코드의 형식은 다음과 같습니다.
for my $entry (@array){
if ($string eq "text"){
break;
}
}
답변
답변
추가 데이터 (질문이 더있는 경우) :
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
}