【发布时间】:2016-04-12 15:30:28
【问题描述】:
我已经通过 cpan 安装了 Perl CGI::Validate 模块。由于安装错误,我不得不强制安装 - 当我尝试使用该模块时,我得到了同样的错误(不出所料)。
不能在 /usr/local/share/perl5/CGI/Validate.pm" 第 216 行使用未定义的值作为 ARRAY 引用。,referer: ...
这是验证模块的错误吗?供参考 - Validate.pm 的第 216 行(以及以下几行):
unless (scalar @{ $form{$field} } or $fields{$field}{optional}) {
$Blank{$field} = qq(Required field "$field" contains no data);
next;
}
有什么明显的吗?
【问题讨论】:
-
$form{$field}未定义,因此它不能在@{ }取消引用中使用它。另外,thins 最后一次更新是在 1998 年。哪个测试正在打破?我会尝试在我的机器上安装它。你用的是什么系统? Perl 版本、操作系统、系统架构。 -
再想一想,如果您查看CPAN Testers results,很明显它不适用于更新的 Perls(最近的 Perls 比 9 年新)。你应该放过这个。或者你可以尝试修复它并提交一个补丁,但由于 CGI 不再是核心,并且不鼓励使用它,我不会浪费时间。
-
谢谢。通常建议使用什么来代替 CGI?
-
此外,使用 Perl 时建议的表单验证方法是什么(我似乎找不到任何最近的文档或博客)。如果您能给我一些阅读材料,将不胜感激。
-
如果你只有一个表格,CGI 就可以了。例如有metacpan.org/pod/distribution/CGI-FormBuilder/lib/CGI/…。如果您想构建更大的应用程序,请查看诸如 Dancer2、Mojolicious 或 Catalyst 之类的现代框架。另请参阅metacpan.org/pod/…,但请记住,对于 CGI 环境,如果每次调用都加载基于 Moose 的东西,它会有点慢。
标签: perl installation cgi cpan