我在 Perl 中做一些工作,但我使用条件运算符遇到了一个奇怪的结果。
有问题的代码:
($foo eq "blah") ? @x = @somearray : @y = ("another","array");
尝试编译此代码会导致错误“ Assignment to both a list and a scalar at XXX line YY, near ');'
”。在试图查明错误的来源时,我使用几种不同的方式在 Perl 中表示数组,它们都返回相同的错误。现在起初我认为这只是赋值语句的一些愚蠢的明显错误,但为了满足我的好奇心,我以更详细的方式重写了语句:
if($foo eq "blah") {
@x = @somearray;
} else {
@y = ("another","array");
}
该版本的代码编译得非常好。
条件运算符的工作方式和我在这里遗漏的基本 if-else 语句的工作方式之间是否有一些细微的区别?我一直认为条件运算符只是第二条语句的简写版本。如果两者在功能上没有区别,为什么 Perl 会反对第一个语句,而不反对第二个?