我是Perl的新手,我正试图找到两个片段之间的区别:
$string && $string eq 'foo'
$string eq 'foo'
我尝试了几个条件,但我无法找到差异。有人可以帮助我找出差异吗?
答案 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