2014-09-23 53 views
3

我新的Perl和我试图找到两个片段之间的区别:的Perl:差异代码

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

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

+1

显示关于如何使用此代码的更多内容。 – toolic 2014-09-23 13:38:50

回答

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"; 
} 

警告消息是:

+3

谢谢,我没有考虑'严格使用'和'使用警告' – 2014-09-23 13:49:47

+3

总是考虑使用'strict'和'warnings'。我认为,我的意思是承诺。 :-) – mwp 2014-09-23 21:11:34