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

时间:2018-08-21 13:36:10

标签: perl compiler-errors syntax-error cgi

我的配置是Debian Stretch

我用命令验证我的Perl代码

[dataKey]="uniqueId"

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

line perl -wcT admin.cgi

错误是:

  

不能使用数组作为引用

我也尝试过 this web editor

似乎错误是:

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

2 个答案:

答案 0 :(得分:2)

正如您所说,问题出在这里:

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

似乎$FORMAT{$name}包含数组引用。您想从引用的数组中获取第二个元素。至少有两种方法可以做到这一点。

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

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

或者您可以将deferencing箭头与数组索引括号一起使用:

$FORMAT{$name}->[1]

您不能(如所发现的)同时使用两种语法:-)

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

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

在第二个解决方案中,箭头实际上是可选的(在两组括号之间总是引用箭头),因此您可以编写:

$FORMAT{$name}[1]

答案 1 :(得分:0)

我的名为webadmin.cgi的cgi现在在ActivePerl上,而Xampp在我的PC Windows 7上。

此代码在本地测试中可以正常运行(完美运行):

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

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

如果我以相同的语法错误进行测试,则无法正常工作(错误500)

如果我将其替换为两次解决方案,则程序会运行但会弹出我。

感谢您的耐心等候,

是否