Perl 如何强制逻辑or运算符的列表上下文
我有一个脚本,允许用户通过命令行参数或stdin输入,所以我做到了:Perl 如何强制逻辑or运算符的列表上下文,perl,Perl,我有一个脚本,允许用户通过命令行参数或stdin输入,所以我做到了: my @expr = @ARGV || <STDIN>; my@expr=@ARGV|; 这并没有像预期的那样起作用。我只有一些像1这样的数字。我必须使用以下版本: my @expr = @ARGV; if (!@expr) { @expr = <STDIN>; } my@expr=@ARGV; 如果(!@expr){ @expr=; } 为什么会这样?如何使第一个版本工作(如果可能)?操作
my @expr = @ARGV || <STDIN>;
my@expr=@ARGV|;
这并没有像预期的那样起作用。我只有一些像1这样的数字。我必须使用以下版本:
my @expr = @ARGV;
if (!@expr) {
@expr = <STDIN>;
}
my@expr=@ARGV;
如果(!@expr){
@expr=;
}
为什么会这样?如何使第一个版本工作(如果可能)?操作符需要标量上下文中的LHS。同一表达式不能同时为列表和标量 最简单的方法是使用
?:代码>三值运算符:
my @expr = @ARGV ? @ARGV : <STDIN>;
my@expr=@ARGV@ARGV:;
这样一来,@ARGV
的第一次出现是标量的,因此测试是否为非空,但第二次出现在列表上下文中,因此产生其实际项