Perl:代码差异

Vai*_*wal 3 perl operators

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

$string && $string eq 'foo'
$string eq 'foo'
Run Code Online (Sandbox Code Playgroud)

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

too*_*lic 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";
}
Run Code Online (Sandbox Code Playgroud)

警告信息是:

Use of uninitialized value $string in string eq
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,我没有考虑`use strict`和`使用警告' (3认同)
  • 始终考虑使用`strict`和`warnings`.考虑一下,我的意思是承诺.:-) (3认同)