看起来像Perl CGI错误

use*_*422 1 perl cgi popup

Perl版本5.8.5我有:

my @dt = qw( 1 0 );
my %dt = qw( 1 single 0 multi );
my $val = 0;

$cgi->popup_menu( {
    -name    => "test",
    -default => $val,
    -values  => \@dt,
    -labels  => \%dt,
} )
Run Code Online (Sandbox Code Playgroud)

弹出窗口一切正常,除了"选中"永远不会设置.所以始终选择第一个val.

如果我做出改变,而改变的0〜2在所有情况下($val,@dt,和%dt)通常然后一切功能,而且我得到的HTML标签"选择".

我还把代码应用到Perl 5.8.8框中,它在那里零工作?我是否需要让我们的系统管理员在5.8.5盒子上推出我们的Perl版本?

bel*_*mit 5

您可以CGI通过CPAN独立更新perl本身.

如果您包含相关的使用语句和模块版本以及示例HTML输出,那将会很方便.

更新:看起来你的perl版本应该使用CGI 3.05(参见Module :: CoreList).检查CGI的更改日志,我们发现这是一个已知的错误.

版本3.45,2009年8月14日[BUG FIXES] 3.允许0作为默认值popup_menu().这从3.37开始被打破.感谢Haze,他是第一个报告此问题并提供补丁的人,还有pfschill,他们在错误发布时进行了精确定位.还增加了对此的回归测试.(RT#37908)

(他们可能没有正确解剖(重新)错误的介绍)

PS而不是单独@dt设置-values[ sort keys %dt ]

  • @ user3250422:请注意,您无需root权限即可安装Perl模块.只要您拥有必要的工具,您可以将其安装仅供您自己使用.我不明白为什么源文件在Windows系统上(请不要在这里使用贬义名称 - 它应该是一个专业平台)阻止你在这里发布它.当然,如果您可以阅读它,那么您可以复制并粘贴它 (2认同)