perl - 为什么我的 continue 在 Perl 5.10 中不执行下一个 when block ?

标签 perl switch-statement continue

当我运行这个时:

use feature ':5.10';
$x=1;
given ($x) {
    when(1) {
        say '1';
        $x = 2;
        continue;
    }
    when (2) {
        say '2';
    }
}

这应该同时打印 1 和 2,但它只打印 1。我是不是遗漏了什么?

编辑:

我添加了 $x = 2 但它仍然只打印“1”

最佳答案

参见 perlsyn手册页:

given(EXPR) will assign the value of EXPR to $_ within the lexical scope of the block

此代码输出 1 和 2:

use feature ':5.10';
$x=1;
given ($x) {
    when(1) {
        say '1';
        $_ = 2;
        continue;
    }
    when (2) {
        say '2';
    }
}

关于perl - 为什么我的 continue 在 Perl 5.10 中不执行下一个 when block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2539570/

相关文章:

C++ if语句不返回

php - 如何在 PHP 中使用 switch case 'or'

php - 从开关内部使用继续跳过 foreach 中的迭代

在 do while 循环中的 continue 语句

python - Python 中是否可以在循环中跳过固定次数的迭代?

perl - 将中间元素插入数组

perl - 如何检测导出的潜艇覆盖?

perl - 为什么我的 Perl 脚本以 137 退出?

java - 为什么不使用 switch case 语句?

perl - 我将如何解决以下错误 "Undefined subroutine &main::resetCounters called at"?