下面是示例。由於一些奇怪的原因,Perl認爲1 and 0
是一個真正的價值。爲什麼?在你的榜樣爲什麼Perl認爲`1和0`是真的?
$ perl -e '$x = 1 and 0; print $x;'
1
下面是示例。由於一些奇怪的原因,Perl認爲1 and 0
是一個真正的價值。爲什麼?在你的榜樣爲什麼Perl認爲`1和0`是真的?
$ perl -e '$x = 1 and 0; print $x;'
1
運算符優先級
perl -e '($x = 1) and 0; print $x;'
,而你想要的是:
perl -e '$x = (1 and 0); print $x;'
或
perl -e '$x = 1 && 0; print $x;'
@bessarabov如果它適合你,你可以接受答案。 –
特別是,賦值運算符('=')的優先級低於'&&',但優先級高於'和'。 – amitparikh
它並不:
$ perl -e '$x = (1 and 0); print $x;'
0
注意,它確實給一個警告。不幸的是,它並沒有給出「在無效上下文中無用......」的錯誤,因爲該警告被抑制爲'0;'(和'1;')。 – ikegami
那麼,它只會在以'perl -we ...'運行時發出警告(並且警告是'Found = in conditional,應該是在-e行1處)。在我的示例'perl -e ...'中,我沒有得到任何警告。 – bessarabov
您的意思是?你應該總是使用'use strict;使用警告;'。而且,如果你不知道發生了什麼,那就更是如此。更不用說檢查錯誤了。 (這裏不適用,但是當人們甚至不檢查錯誤時,人們會問很多次錯誤!) – ikegami