如何从Perl中的内部循环中打破外部循环?

问题描述:

假设我有像一块的Perl代码:如何从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()是真实的,请在此变种在每个循环的恢复他们之前和last()如果这是真的。

任何建议或想法?

谢谢。

+7

在Perl中,注释标记拼写为“#”,而不是“//”。 – daxim 2010-09-14 13:32:00

使用标签:

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

“最后LABEL” 语法描述in the documentation