or与||

or比||优先级低,除此之外,两者无区别。

下面代码输出什么?

my $a = 0;

$a = $a or 1;
print $a, "\n";

$a = $a || 1;
print $a, "\n";

输出:

0

1

为什么呢?因为||, =, or 这三者优先级从左至右逐渐降低。

所以,这样写可以。

chomp(my $filename = shift( @ARGV ) || <STDIN>);

但是这样写就不行

chomp(my $filename = shift( @ARGV ) or <STDIN>);

会出现如下错误

Can't modify logical or (||) in chomp


posted on 2011-12-27 09:41  perlman  阅读(308)  评论(0编辑  收藏  举报

导航