Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行旧的perl脚本(2007)_Perl - Fatal编程技术网

运行旧的perl脚本(2007)

运行旧的perl脚本(2007),perl,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 ./di

我有一个旧的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.

除了尝试修复脚本,是否有一种简单的方法将其解释为“旧的”?

这是在中引入的更改:

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

自v5.6.1以来,这些已被弃用,并引发了弃用 自v5.16以来的警告

这种语法从来没有意义,所以最好删除它

至于如何修复它,这实际上取决于最初的程序员的意图,如果没有看到更多的代码,我们就无法知道这一点。但是错误消息中的建议可能是一个好的开始

更新:我刚刚在错误消息中注意到:

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


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

您最近是否将Perl更新到了一个更新得多的版本?@simbabque,我想在我从osx切换到Linux之前,这个问题曾经起作用,但我不知道当时安装了哪个版本的Perl。
定义(@array)
从来都不正确。值列表不能为“未定义”,只能为“空”。将
定义(@array)
改为
@array
会很简单,而且更可取。@Toothrot:听起来你需要雇佣一名程序员。