Pas*_*cal 8 arrays perl default
如果没有给出命令行参数,下面似乎可以正常工作,但是当它们全部得到的时候是提供的参数数量,而不是参数本身.它似乎@ARGV是被迫标量的||.我也试过使用or并//得到类似的结果.在这里使用的运算符是什么?
say for @ARGV || qw/one two three/;
Run Code Online (Sandbox Code Playgroud)
该||运营商将它用来做什么的性质强加标量上下文
二进制
"or"返回两个周围表达式的逻辑析取.它相当于||除了非常低的优先级.
(强调我的).因此,当它的左侧操作数是一个数组时,它获得数组的长度.
但是,如果该值为0,则仅评估右侧
这意味着它会短路:仅当左表达式为false时才会计算正确的表达式.
标量或列表上下文如果被计算,则向下传播到右操作数.
所以你得到那个案子的清单.
没有操作员可以执行您的陈述所需的内容.最近的可能是
say for (@ARGV ? @ARGV : qw(one two));
Run Code Online (Sandbox Code Playgroud)
但有更好,更系统的方法来处理@ARGV.