Perl的(或,和)和(||,\u0026\u0026)短路运算符有什么区别?

这些子程序中哪一个不像另一个
sub or1 {
    my ($a,$b) = @_;
    return $a || $b;
}

sub or2 {
    my ($a,$b) = @_;
    $a || $b;
}

sub or3 {
    my ($a,$b) = @_;
    return $a or $b;
}

sub or4 {
    my ($a,$b) = @_;
    $a or $b;
}

我从C和Perl 4来到Perl 5,总是使用||直到我看到更多的脚本使用或和我喜欢它的样子。但是正如上面的测验所示,它不是没有它的缺陷为不道德的。对于使用这两个结构或者使用很多的人,或者,你使用什么经验法则来决定使用哪个结构,并确保代码正在做你认为它正在做什么?

解决方法

由于’or’运算符的低优先级,or3解析如下:
sub or3 {
    my ($a,$b) = @_;
    (return $a) or $b;
}

通常的建议是只使用’或’运算符作为控制流:

@info = stat($file) or die;

有关更多讨论,请参阅perl手册:http://perldoc.perl.org/perlop.html#Logical-or-and-Exclusive-Or

相关文章

1. 如何去重 #!/usr/bin/perl use strict; my %hash; while(...
最近写了一个perl脚本,实现的功能是将表格中其中两列的数据...
表的数据字典格式如下:如果手动写MySQL建表语句,确认麻烦,...
巡检类工作经常会出具日报,最近在原有日报的基础上又新增了...
在实际生产环境中,常常需要从后台日志中截取报文,报文的形...
最近写的一个perl程序,通过关键词匹配统计其出现的频率,让...