我的配置是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]
如你所说,问题在于:
@{$FORMAT{$name}}->[1]
看来$FORMAT{$name}
预计包含一个数组引用。并且您希望从引用的数组中获取第二个元素。有(至少!)两种方法可以做到这一点。
您可以取消引用数组引用以获取数组,然后使用标准数组索引括号:
@{$FORMAT{$name}}[1]
或者您可以使用引用箭头和数组索引括号:
$FORMAT{$name}->[1]
你不能做的(正如你所发现的)是同时使用两种语法:-)
更新:正如鲍罗丁在评论中指出的那样,我的第一个解决方案是错误的。从数组访问单个元素时,应将@
更改为$
。所以它应该是:
${$FORMAT{$name}}[1]
在我的第二个解决方案中,箭头实际上是可选的(取消引用两组括号之间的箭头),所以你可以写:
$FORMAT{$name}[1]
我的cgi名为webadmin.cgi现在是在我的电脑Windows 7上使用Xampp的ActivePerl。
这个在本地测试中运行(运行完美),但同样的错误:
print &select("$id-2",\@values,\@values,@{$FORMAT{$name}}->[1]),"<br /> \n";
如果最后在OS debian stretch(我的专用服务器)上安装相同的文件:
如果我用相同的语法错误测试它不起作用(错误500)
如果我用两次解决方案替换,程序在线运行,但弹出我。
谢谢你的耐心,
或不