これがサンプルです。奇妙な理由で、Perl はそれ1 and 0
が真の値であると考えています。なんで?
$ perl -e '$x = 1 and 0; print $x;'
1
and
との優先順位が&&
異なるため:
$x = 1 and 0
のようですが($x = 1) and 0
、$x = 1 && 0
のよう$x = (1 && 0)
です。
perlop(1)を参照してください。
あなたの例での演算子の優先順位は
perl -e '($x = 1) and 0; print $x;'
あなたが望むのは:
perl -e '$x = (1 and 0); print $x;'
また
perl -e '$x = 1 && 0; print $x;'
それはしません:
$ perl -e '$x = (1 and 0); print $x;'
0