我正在通過Perl的一些開始的例子。爲什麼這個Perl代碼不會產生一個換行
print "\n6 less than 7 and 7 greater than 2 : ", 6 < 7 and 7 > 2, "\n";
print ((3 + 2)/5), "\n";
最後的換行符沒有發生。爲什麼?
我正在通過Perl的一些開始的例子。爲什麼這個Perl代碼不會產生一個換行
print "\n6 less than 7 and 7 greater than 2 : ", 6 < 7 and 7 > 2, "\n";
print ((3 + 2)/5), "\n";
最後的換行符沒有發生。爲什麼?
這是一個運營商優先的問題。 and
具有非常低的優先級,通常應該只用於控制流。 Perl會分析你的代碼是這樣的:
(print "\n6 greater than 7 and 7 greater than 2 : ", 6 < 7) and (7 > 2, "\n");
(print +(3 + 2)/5), "\n";
的解決方案:當你打算使用布爾運算符
或者
使用&&
代替and
,使用的括號迫使某些優先權:(6 < 7 and 7 > 2)
parens也用於參數l在函數調用中。如果你不希望這個解釋,把+
的括號前:
print +((3 + 2)/5), "\n";
相同
print(((3 + 2)/5), "\n");
使用say
函數而不是print
,爲say
自動附加一個換行符:
use feature 'say';
say +(3 + 2)/5;
是啊,我正要次編輯e代碼,無論如何。 – esh