假设我有一段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()
。
有任何建议或想法吗?
感谢。
答案 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。