如果没有给出命令行参数,如何使用默认数组?

Pas*_*cal 8 arrays perl default

如果没有给出命令行参数,下面似乎可以正常工作,但是当它们全部得到的时候是提供的参数数量,而不是参数本身.它似乎@ARGV是被迫标量的||.我也试过使用or//得到类似的结果.在这里使用的运算符是什么?

say for @ARGV || qw/one two three/;
Run Code Online (Sandbox Code Playgroud)

zdi*_*dim 6

||运营商将它用来做什么的性质强加标量上下文

二进制"or"返回两个周围表达式的逻辑析取.它相当于||除了非常低的优先级.

(强调我的).因此,当它的左侧操作数是一个数组时,它获得数组的长度.

但是,如果该值为0,则仅评估右侧

这意味着它会短路:仅当左表达式为false时才会计算正确的表达式.

什么是C-Style Logical或perlop中的拼写

标量或列表上下文如果被计算,则向下传播到右操作数.

所以你得到那个案子的清单.

没有操作员可以执行您的陈述所需的内容.最近的可能是

say for (@ARGV ? @ARGV : qw(one two));
Run Code Online (Sandbox Code Playgroud)

但有更好,更系统的方法来处理@ARGV.