在Perl中如何从内部循环中跳出外部循环?

26

假设我有一段像这样的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
}
如果something()为真,我想要中断("last")所有循环。如何实现?我想到了两个选项,但都不喜欢: 使用 GOTO 运算符 添加一个布尔变量,在每个循环中恢复之前检查这个变量是否为true,并在它为true时使用last()。 有任何建议或想法吗? 谢谢。

7
在Perl中,注释标记使用#而非// - daxim
3个回答

48
使用标签:

使用一个标签:

OUTER:
foreach my $x (@x) {
 foreach my $y (@z) {
  foreach my $z (@z) {
   if (something()) {
    last OUTER;
   }
   # do stuff 
  }
  # do stuff
 }
 # do stuff
}

16

“last LABEL”语法在文档中有描述。


-1
请注意,您也可以用一行代码完成这个操作。使用关键字LINE。例如:perl -ane 'next if length$F[5]!=1; for(split/,/,$F[6]){next LINE if length$_!=1}; print'

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接