Function print与三元条件算子之间的奇怪相互作用
遇到了Function print与三元条件算子之间的奇怪相互作用,function,perl,expression,Function,Perl,Expression,遇到了print和三元条件运算符之间的奇怪交互,我不理解。如果我们这样做 打印“foo”。(1)‘是’:‘否’。’巴' …然后我们得到输出…: foo,是条 …正如我们所料。但是,如果我们这样做 打印(1?'yes':'no')。'巴' …然后我们就得到输出…: 是 在第二种情况下,为什么不将“bar”附加到输出中呢?让我们这样做吧,但这是真的——也就是说,警告打开了 perl -we'print (1 ? "yes" : "no") . " bar"' 它打印 print (...) int
print
和三元条件运算符之间的奇怪交互,我不理解。如果我们这样做
打印“foo”。(1)‘是’:‘否’。’巴'代码>
…然后我们得到输出…:
foo,是条
…正如我们所料。但是,如果我们这样做
打印(1?'yes':'no')。'巴'代码>
…然后我们就得到输出…:
是
在第二种情况下,为什么不将“bar”附加到输出中呢?让我们这样做吧,但这是真的——也就是说,警告打开了
perl -we'print (1 ? "yes" : "no") . " bar"'
它打印
print (...) interpreted as function at -e line 1.
Useless use of concatenation (.) or string in void context at -e line 1.
yes
或者,调用print
as函数,并使用全括号
perl -we'print( (1 ? "yes" : "no") . " bar", "\n" )'
在这两种情况下我都添加了换行符
有关相关示例和精确文档链接的详细讨论,请参阅。让我们这样做吧,但这是真实的,即在
perl -we'print (1 ? "yes" : "no") . " bar"'
它打印
print (...) interpreted as function at -e line 1.
Useless use of concatenation (.) or string in void context at -e line 1.
yes
或者,调用print
as函数,并使用全括号
perl -we'print( (1 ? "yes" : "no") . " bar", "\n" )'
在这两种情况下我都添加了换行符
有关相关示例和精确文档链接的详细讨论,请参阅。如果函数名后的第一个非空白字符是一个左括号,则Perl将其解释为函数参数列表的开始,匹配的右括号将用作参数列表的结尾。这是使用警告
将告诉您的内容之一
通常的解决方法是在左括号前插入一个+
$ perl -e "print (1 ? 'yes' : 'no') . ' bar'"
yes
$ perl -e "print +(1 ? 'yes' : 'no') . ' bar'"
yes bar
如果函数名后的第一个非空白字符是一个左括号,那么Perl将把它解释为函数参数列表的开始,匹配的右括号将用作参数列表的结尾。这是使用警告
将告诉您的内容之一
通常的解决方法是在左括号前插入一个+
$ perl -e "print (1 ? 'yes' : 'no') . ' bar'"
yes
$ perl -e "print +(1 ? 'yes' : 'no') . ' bar'"
yes bar
第一种形式是(打印(1?'yes':'no')。'条形图“
,但您正在查找打印((1?'yes':'no')。'bar')
--。第一种形式是(打印(1?'yes':'no')。'条形图“
,但您正在查找打印((1?'yes':'no')。'bar')
--。