如何在 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()
为 true,我想中断('last')所有循环。
我怎样才能做到这一点? 我想到了两个选择,但我都不喜欢: 使用GOTO
添加一个布尔变量来标记 something()
为 true,在每个循环恢复之前检查该变量,并检查 last()
如果它为 true。
有什么建议或想法吗?
谢谢。
Suppose I have a piece of Perl code like:
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
}
If something()
is true, I would like to break ('last') all the loops.
how can I do that?
I thought of two options, both of which I don't like:
Using something GOTO
Adding a boolean variable which will mark something()
is true, check this var in each of the loops before they resume and last()
if it's true.
Any suggestions or thoughts?
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用标签:
Use a label:
文档中描述了“last LABEL”语法。
The "last LABEL" syntax is described in the documentation.
请注意,您也可以在一个衬垫中完成此操作。使用关键字 LINE。例如 perl -ane 'next if length$F[5]!=1; for(split/,/,$F[6]){如果长度$_!=1则下一行};打印'
Note that you can also do this in a one liner. Use the keyword LINE. e.g.
perl -ane 'next if length$F[5]!=1; for(split/,/,$F[6]){next LINE if length$_!=1}; print'