运行旧的perl脚本(2007)

时间:2016-11-15 12:34:16

标签: perl

我有一个旧的perl脚本,不再正常运行,输出

Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at /usr/local/diogenes/perl/CPAN/CGI.pm line 449.
Compilation failed in require at ./diogenes-server.pl line 42.
BEGIN failed--compilation aborted at ./diogenes-server.pl line 42.

有没有一种简单的方法可以将它解释为“旧”?

而不是尝试修复脚本

1 个答案:

答案 0 :(得分:4)

这是Perl 5.22中引入的更改:

  

已定义(@array)和已定义(%哈希)现在是致命错误

     

自v5.6.1起,这些已被弃用,并已提出弃用   自v5.16以来的警告。

这种语法永远不会有意义,所以最好删除它。

至于如何修复它,这真的取决于原始程序员的意图,并且我们无法知道没有看到更多的代码。但错误信息中的建议可能是一个良好的开端。

更新:我刚刚在错误消息中注意到了这一点:

  

at /usr/local/diogenes/perl/CPAN/CGI.pm第449行

所以问题出在你的程序使用的库中。这个问题似乎不是最新版本的CGI.pm,所以也许你可以从更新它开始。