我有一个旧的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.
有没有一种简单的方法可以将它解释为“旧”?
而不是尝试修复脚本答案 0 :(得分:4)
这是Perl 5.22中引入的更改:
已定义(@array)和已定义(%哈希)现在是致命错误
自v5.6.1起,这些已被弃用,并已提出弃用 自v5.16以来的警告。
这种语法永远不会有意义,所以最好删除它。
至于如何修复它,这真的取决于原始程序员的意图,并且我们无法知道没有看到更多的代码。但错误信息中的建议可能是一个良好的开端。
更新:我刚刚在错误消息中注意到了这一点:
at /usr/local/diogenes/perl/CPAN/CGI.pm第449行
所以问题出在你的程序使用的库中。这个问题似乎不是最新版本的CGI.pm,所以也许你可以从更新它开始。