在perl中嵌套while循环中中断最内层循环:找不到Label

前端之家收集整理的这篇文章主要介绍了在perl中嵌套while循环中中断最内层循环:找不到Label前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我遇到了双重嵌套while循环中最内层封闭循环的问题.
考虑:

use v5.14;

my $i=0;
while ($i<=1) {
    my $j=0;
    do {
        last if $j==2;
        say $j++;
    } while ($j<4);
    $i++;
}

输出在这里:

0
1

而预期的产出应该是:

0
1
0
1

在最里面的封闭循环中添加标签

my $i=0;
while ($i<=1) {
    my $j=0;
    LINE: do {
        last LINE if $j==2;
        say $j++;
    } while ($j<4);
    $i++;
}

给出错误

Label not found for "last LINE" at ./p.pl line 9.

解决方法

你不能使用最后的内部do {}块,但你可以

my $i=0;
while ($i<=1) {
    my $j=0;
    LINE: { 
      do {
        last LINE if $j==2;
        say $j++;
      } while ($j<4); 
    }
    $i++;
}

要么

my $i=0;
OUTER: while ($i<=1) {
    my $j=0;
    LINE: do {
        next OUTER if $j==2;
        say $j++;
    } while ($j<4);
}
continue {
    $i++;
}

猜你在找的Perl相关文章