如何在Perl中打破外部循环?

时间:2010-09-14 11:45:02

标签: perl loops break flow-control

假设我有一段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()为真,我想打破('最后')所有循环。

我该怎么做? 我想到了两个选项,我不喜欢这两个选项: 使用GOTO的内容 添加一个标记为something()的布尔变量为true,在每个循环恢复之前检查这个var,如果是真的则last()

有任何建议或想法吗?

感谢。

2 个答案:

答案 0 :(得分:38)

使用标签:

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

答案 1 :(得分:14)

“last LABEL”语法描述为in the documentation