2011-06-22 18 views
3

我清理了一些代码,我在我们的服务器日志的perl错误是看到...在字符串eq中使用未初始化的值。左还是右?

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. 

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

+0

你为什么不给出第一个错误行的内容?没有看到任何东西,我猜测你会比较函数调用的结果或散列/数组值查找。也就是说,它不是一个简单的未定义的名为标量。 – unpythonic

+0

你应该**使用诊断**杂注,如果你得到一个你不明白的警告 – yb007

回答

10

指出哪个变量是undef被添加到了perl 5.10中的警告(很容易的地方)(很欢呼)。您的服务器可能使用较旧的perl。

+3

http://search.cpan.org/dist/perl/pod/perl5100delta.pod#New_or_Changed_Diagnostics – daxim

+0

大声笑,现在我意识到问题是关于警告消息的区别。 –

+0

BAM!而已!你已经开悟了我一次! JW –