Perl期间与逗号运算符

9 perl comma period

有谁知道为什么

print "$str is " , ispalindrome($str) ? "" : " not" , " a palindrome\n" 
Run Code Online (Sandbox Code Playgroud)

打印"女士是回文"

print "$str is " . ispalindrome($str) ? "" : " not" . " a palindrome\n"
Run Code Online (Sandbox Code Playgroud)

打印"1"?

jwo*_*der 19

条件运算符(? :)的优先级高于逗号,但低于句点.因此,第一行被解析为:

print("$str is " , (ispalindrome($str) ? "" : " not"), " a palindrome\n")
Run Code Online (Sandbox Code Playgroud)

而第二个被解析为:

print(("$str is " . ispalindrome($str)) ? "" : (" not" . " a palindrome\n"))
Run Code Online (Sandbox Code Playgroud)

后一行实际上应该打印"",而不是"1"; 实际上你得到的是什么?