24

次のような Perl コードがあるとします。

foreach my $x (@x) {
 foreach my $y (@z) {
  foreach my $z (@z) {
   if (something()) {
    # I want to break free!
   }
   # do stuff 
  }
  # do stuff
 }
 # do stuff
}

true の場合something()、すべてのループを中断 (「最後」) したいと思います。

どうやってやるの?私は 2 つのオプションを考えましたが、どちらも好きではありません: 何かを使用してtrueGOTO をマークするブール変数を追加し、something()再開する前に各ループでこの var をチェックし、それが true であるかどうかを確認しlast()ます。

提案や考えはありますか?

ありがとう。

4

2 に答える 2

44

ラベルを使用する:

OUTER:
foreach my $x (@x) {
 foreach my $y (@z) {
  foreach my $z (@z) {
   if (something()) {
    last OUTER;
   }
   # do stuff 
  }
  # do stuff
 }
 # do stuff
}
于 2010-09-14T11:47:56.507 に答える
16

「最後の LABEL」構文については、ドキュメントで説明されています。

于 2010-09-14T11:51:50.457 に答える