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版本?
您可以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 ]