Zai*_*zvi 291 perl loops strict break
我试图break在for循环中使用一个语句,但由于我在Perl代码中也使用严格的subs,我收到一个错误说:
在./final.pl第154行使用"严格潜艇"时不允许使用Bareword"break".
有没有解决方法(除了禁用严格的潜艇)?
我的代码格式如下:
for my $entry (@array){
if ($string eq "text"){
break;
}
}
Run Code Online (Sandbox Code Playgroud)
Zai*_*zvi 429
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Run Code Online (Sandbox Code Playgroud)
Ken*_*ric 174
其他数据(如果您有更多问题):
FOO: {
for my $i ( @listone ){
for my $j ( @listtwo ){
if ( cond( $i,$j ) ){
last FOO; # --->
# |
} # |
} # |
} # |
} # <-------------------------------
Run Code Online (Sandbox Code Playgroud)
Kam*_*yan 18
只需last在这里工作:
for my $entry (@array){
if ($string eq "text"){
last;
}
}
Run Code Online (Sandbox Code Playgroud)
如果你有嵌套循环,那么last将从最里面退出.在这种情况下使用标签:
LBL_SCORE: {
for my $entry1 ( @array1 ){
for my $entry2 ( @array2 ){
if ( $entry1 eq $entry2 ){ # or any condition
last LBL_SCORE;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
给定last语句将使编译器从两个循环中出来.可以在任意数量的循环中完成相同的操作,并且标签可以在任何地方固定.
在较大的迭代中,我喜欢使用中断。只需按Ctrl+ C退出:
my $exitflag = 0;
$SIG{INT} = sub { $exitflag=1 };
while(!$exitflag) {
# Do your stuff
}
Run Code Online (Sandbox Code Playgroud)