CGI错误无法使用数组作为参考

问题描述 投票:1回答:2

我的配置是Debian Stretch

我用命令验证我的Perl代码

line perl -wcT admin.cgi

我在此行的代码中有错误:

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

错误是:

不能使用数组作为参考

我也尝试过this web editor

似乎错误是:

@{$FORMAT{$name}}->[1]
perl compiler-errors syntax-error cgi
2个回答
2
投票

如你所说,问题在于:

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

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

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

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

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

$FORMAT{$name}->[1]

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

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

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

在我的第二个解决方案中,箭头实际上是可选的(取消引用两组括号之间的箭头),所以你可以写:

$FORMAT{$name}[1]

0
投票

我的cgi名为webadmin.cgi现在是在我的电脑Windows 7上使用Xampp的ActivePerl。

这个在本地测试中运行(运行完美),但同样的错误:

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

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

如果我用相同的语法错误测试它不起作用(错误500)

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

谢谢你的耐心,

或不

© www.soinside.com 2019 - 2024. All rights reserved.