为什么我的脚本在eval“string”中报告'未初始化值?

问题描述:

我得到这样的警告:为什么我的脚本在eval“string”中报告'未初始化值?

Use of uninitialized value in eval \"string\" at myscript.pl line 57. 

当我运行这段代码:

eval; 
{ 
     `$client -f $confFile -i $inputFile -o $outputFile`; 
}; 

if([email protected]) 
{ 
     # error handling here ... 
} 

是什么原因造成的错误?

我该如何解决根本原因? (或以其他方式抑制警告?)

eval后面有一个分号。

+1

好天啊。 好的,我是个白痴。 – mseery 2008-11-20 01:35:20

+0

而eval则以$ _作为其默认参数。它可以让你做这样的事情: perl -wnE'say eval' 但是否则不是特别有用。 – ysth 2008-11-20 02:28:45

这里的eval无论如何都不会做任何事情。反引号从不抛出错误。这不是[email protected],而是$?,你想检查。

此外,如果您丢弃结果,则使用system可能会更清洁。例如

system($client, '-f', $confFile, '-i', $inputFile, '-o', $outputFile) and do { 
    #error handling here... 
};