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

时间:2011-06-22 15:46:55

标签: perl initialization

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

Use of uninitialized value in string eq at .....

查看代码,该行看起来像这样......

if ($level1 eq $level2) {

太公平了。我想我的问题是这个。问题是$ level1还是$ level2?

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

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

if ($a eq $b){
    print "....";
}

我得到了更多信息。

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.

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

1 个答案:

答案 0 :(得分:10)

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