while - 我如何擺脫Perl中的循環?




perl loop while (3)

我試圖在for循環中使用break語句,但由於我在我的Perl代碼中也使用了嚴格的subs,所以我得到一個錯誤:

在./final.pl第154行使用“strict subs”時不允許使用Bareword“break”。

有沒有解決方法(除了禁用嚴格的潛艇)?

我的代碼格式如下:

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

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語句將使編譯器從兩個循環中出來。 在任何數量的循環中都可以做到這一點,並且標籤可以在任何地方固定。


其他數據(如果您有更多問題):

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

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

在我喜歡使用中斷的大型迭代中。 只需按Ctrl + C即可退出:

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

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




strict