313

breakループでステートメントを使用しようとしていforますが、Perlコードでも厳密なサブを使用しているため、次のようなエラーが発生します。

./final.pl行154で「strictsubs」が使用されている間は、ベアワード「break」は許可されません。

これに対する回避策はありますか(厳密な潜水艦を無効にする以外に)?

私のコードは次のようにフォーマットされています:

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

5 に答える 5

462

ああ、見つけた。休憩の代わりに最後を使用します

for my $entry (@array){
    if ($string eq "text"){
         last;
    }
}
于 2008-11-19T20:23:48.570 に答える
177

追加データ (さらに質問がある場合):

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

                    last FOO;  # --->
                                   # |
                 }                 # |
          }                        # |
       }                           # |
 } # <-------------------------------
于 2008-11-19T20:33:48.723 に答える
5

大規模な反復では、割り込みを使用するのが好きです。Ctrl+を押すだけCで終了します:

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

while(!$exitflag) {
    # Do your stuff
}
于 2015-09-14T23:45:21.637 に答える