print "Val: " . ('a','b','c');
输出结果为:
C
为什么?
如何做到这一点并不重要。它可能是:
sub test {
return ('a','b','c');
}
print "Val: " . test();
答案 0 :(得分:5)
http://blogs.perl.org/users/steven_haryanto/2012/09/the-comma-operator.html
解释了逗号运算符。引用它们,
“......它只是二进制逗号运算符。在标量上下文中,逗号运算符(引用perlop manpage逐字)”计算其左参数,抛出该值,然后计算其右参数并返回那个价值。这就像C的逗号运算符一样。“所以最终的结果是最正确的论点......”
答案 1 :(得分:3)
连接运算符(.
)将两个标量作为操作数,因此您的列表将在标量上下文中进行评估。正如roderick Young的回答所解释的那样,由于逗号运算符的工作方式,列表在标量上下文中进行评估时会返回其最终值。
如果您要打印列表中的所有项目,可以在,
语句中使用.
代替print
,或者(可能更好)使用{{1}在连接之前将列表转换为标量:
join