在字符串eq中使用未初始化的值.左还是右?

Jan*_*kie 3 perl initialization

我正在清理一些代码,我在服务器日志中看到perl错误是......

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

看代码这条线看起来像这样....

if ($level1 eq $level2) {
Run Code Online (Sandbox Code Playgroud)

好,可以.我想我的问题是这个.问题是$ level1还是$ level2?

我写了一个快速测试试图在本地复制它,看起来像这样....

#!/usr/bin/perl
use warnings;
my $a;
my $b;

if ($a eq $b){
    print "....";
}
Run Code Online (Sandbox Code Playgroud)

而且我得到了更多信息错误.

Use of uninitialized value $a in string eq at ./warntest.cgi line 7.
Use of uninitialized value $b in string eq at ./warntest.cgi line 7.
Run Code Online (Sandbox Code Playgroud)

这似乎是不一致的行为.有人有线索吗?珍妮

yst*_*sth 10

在perl 5.10中警告(很容易)添加了哪个变量undef的指示(为了欢呼).您的服务器可能使用较旧的perl.

  • http://search.cpan.org/dist/perl/pod/perl5100delta.pod#New_or_Changed_Diagnostics (3认同)