如何跳出 Perl 中的循环?
我试图在 for
循环中使用 break
语句,但由于我也在 Perl 代码中使用严格的 subs,所以我收到一条错误消息:
不允许使用裸字“break” ./final.pl 使用“严格 subs” 第 154 行。
是否有解决方法(除了禁用严格 subs 之外)?
我的代码格式如下:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
I'm trying to use a break
statement in a for
loop, but since I'm also using strict subs in my Perl code, I'm getting an error saying:
Bareword "break" not allowed while
"strict subs" in use at ./final.pl
line 154.
Is there a workaround for this (besides disabling strict subs)?
My code is formatted as follows:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
对于带有隐式循环的 Perl 单行代码(使用
-n
或-p
命令行选项),请使用last
或last LINE
来跳出迭代输入记录的循环。 例如,这些简单的示例全部打印输入的前 2 行:全部打印:
perl 单行代码使用这些命令行标志:
-e
:告诉 Perl 查找内联代码,而不是在文件中。-n
:一次循环输入一行,默认将其分配给$_
。-p
:与-n
相同,还在输入的每次循环迭代后添加print
。另请参见:
last
文档上一个
、下一个
、重做
、继续
- 示例perlrun:命令行开关文档
last 的更多示例
在 Perl one-liners 中:在第一次匹配后中断一个 liner 命令行脚本
打印大文件的前 N 行
For Perl one-liners with implicit loops (using
-n
or-p
command line options), uselast
orlast LINE
to break out of the loop that iterates over input records. For example, these simple examples all print the first 2 lines of the input:All print:
The perl one-liners use these command line flags:
-e
: tells Perl to look for code in-line, instead of in a file.-n
: loop over the input one line at a time, assigning it to$_
by default.-p
: same as-n
, also addprint
after each loop iteration over the input.SEE ALSO:
last
docslast
,next
,redo
,continue
- an illustrated exampleperlrun: command line switches docs
More examples of
last
in Perl one-liners:Break one liner command line script after first match
Print the first N lines of a huge file
哦,我找到了。 您使用 last 而不是 break
它也在“perlsyn(1)”中的循环控制下进行了描述(UNIX 上的
man perlsyn
-喜欢)。Oh, I found it. You use last instead of break
It's also described under Loop Control in "perlsyn(1)" (
man perlsyn
on UNIX-like).附加数据(如果您有更多问题):
Additional data (in case you have more questions):
只需
last
就可以在这里工作:如果您有嵌套循环,则
last
将从最内层循环退出。 在这种情况下使用标签:给定
last
语句将使编译器从两个循环中退出。 可以在任意数量的循环中执行相同的操作,并且标签可以固定在任何地方。Simply
last
would work here:If you have nested loops, then
last
will exit from the innermost loop. Use labels in this case:Given a
last
statement will make the compiler to come out from both the loops. The same can be done in any number of loops, and labels can be fixed anywhere.在大型迭代中我喜欢使用中断。 只需按 Ctrl + C 即可退出:
On a large iteration I like using interrupts. Just press Ctrl + C to quit: