加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-15 23:34:56 所属栏目:大数据 来源:网络整理
导读:我遇到了双重嵌套while循环中最内层封闭循环的问题. 考虑: use v5.14;my $i=0;while ($i=1) { my $j=0; do { last if $j==2; say $j++; } while ($j4); $i++;} 输出在这里: 01 而预期的产出应该是: 0101 在最里面的封闭循环中添加标签: my $i=0;while ($
我遇到了双重嵌套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++;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读