运行旧的perl脚本(2007)
我有一个旧的perl脚本,它不再正常运行,输出运行旧的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
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:听起来你需要雇佣一名程序员。