Perl:代码的差异

Perl:代码的差异,perl,operators,Perl,Operators,我是Perl新手,我试图找出两个代码片段之间的区别: $string && $string eq 'foo' $string eq 'foo' 我试过几种情况,但都没有找到区别。有人能帮我找出区别吗?一个区别是,如果变量从未被赋值,第二行可能会生成警告消息(当使用使用警告时;): use warnings; use strict; my $string; if ($string && $string eq 'foo') { print "true1\

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

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

我试过几种情况,但都没有找到区别。有人能帮我找出区别吗?

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

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

谢谢,我没有考虑<代码>使用严格的< /代码>和<代码>使用警告< /代码>始终考虑使用<代码>严格< /COD>和<代码>警告< /代码>。通过考虑,我的意思是承诺。