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

Dav*_*d B 23 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
}
Run Code Online (Sandbox Code Playgroud)

如果something()是真的,我想打破('最后')所有循环.

我怎样才能做到这一点?我想到了两个选项,我不喜欢这两个选项:使用一些东西GOTO 添加一个将标记的布尔变量something()为true,在每个循环恢复之前检查这个var,last()如果它是真的.

有什么建议或想法?

谢谢.

Woo*_*ble 42

使用标签:

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


Dav*_*oss 15

文档中描述 "last LABEL"语法.