Perl:代码差异

时间:2014-09-23 13:29:33

标签: perl operators

我是Perl的新手,我正试图找到两个片段之间的区别:

$string && $string eq 'foo'
$string eq 'foo'

我尝试了几个条件,但我无法找到差异。有人可以帮助我找出差异吗?

1 个答案:

答案 0 :(得分:12)

一个区别是第二行可以生成警告消息(使用use warnings;时),如果变量从未被赋值:

use warnings;
use strict;

my $string;

if ($string && $string eq 'foo') {
    print "true1\n";
}
else {
    print "false1\n";
}

if ($string eq 'foo') { # Get warning
    print "true2\n";
}
else {
    print "false2\n";
}

警告信息为:

Use of uninitialized value $string in string eq