CGI 错误 Can't use an array as a reference

CGI error Can't use an array as a reference

我的配置是 Debian Stretch

我使用命令

验证我的 Perl 代码
line perl -wcT admin.cgi

我在这一行的代码中有错误:

print &select("$id-2",\@values,\@values,@{$FORMAT{$name}}->[1]),"<br /> \n";

错误是:

Can't use an array as a reference

我也试过 this web editor

看来错误是:

@{$FORMAT{$name}}->[1]

如你所说,问题出在这里:

@{$FORMAT{$name}}->[1]

看来 $FORMAT{$name} 应该包含一个数组引用。并且您想从引用的数组中获取第二个元素。有(至少!)两种方法可以做到这一点。

您可以取消对数组引用的引用以获取数组,然后使用标准数组索引括号:

@{$FORMAT{$name}}[1]

或者您可以使用引用箭头和数组索引括号:

$FORMAT{$name}->[1]

你不能做的(如你所见)是同时使用两种语法:-)

更新: 正如 Borodin 在评论中指出的那样,我的第一个解决方案是不正确的。从数组访问单个元素时,应将 @ 更改为 $。所以它实际上应该是:

${$FORMAT{$name}}[1]

而在我的第二个解决方案中,箭头实际上是可选的(两组括号之间的取消引用箭头始终是),因此您可以这样写:

$FORMAT{$name}[1]

我的名为 webadmin.cgi 的 cgi 现在在 ActivePerl 上 Xampp 在我的电脑上 windows 7.

这个在本地测试中有效(运行 完美)但出现相同的错误:

print &select("$id-2",\@values,\@values,@{$FORMAT{$name}}->[1]),"<br /> \n";

如果最终在 OS debian stretch(我的专用服务器)上安装相同的文件:

如果我用同样的语法错误进行测试,它就不起作用(错误 500)

如果我用两次解决方案替换,程序在线 运行 但弹出我。

感谢您的耐心等待,