3

抱歉,如果我的问题太简单,我刚开始使用 CGI ......所以我有一堆同名的复选框。示例 HTML:

<form action="/cgi-bin/checkbox.cgi" method="POST">
<input name="Loc_opt" value="Loc_1" type="checkbox">Option 1<br>
<input name="Loc_opt" value="Loc_2" type="checkbox">Option 2<br>
<input name="Loc_opt" value="Loc_3" type="checkbox">Option 3<br>
<input type="submit" value="Submit">
</form>

我需要找出其中哪些是使用 Perl CGI 检查的。我在 checkbox.cgi 中有以下内容:

print "Content-type:text/html\r\n\r\n";
local ($buffer, @pairs, $pair, $name, $value, %FORM);
    # Read in text
    $ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
    if ($ENV{'REQUEST_METHOD'} eq "POST")
    {
    read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    }else {
    $buffer = $ENV{'QUERY_STRING'};
    }
    # Split information into name/value pairs
    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs)
    {
    ($name, $value) = split(/=/, $pair);
    $value =~ tr/+/ /;
    $value =~ s/%(..)/pack("C", hex($1))/eg;
    $FORM{$name} = $value;
    }

我现在应该怎么做才能打印所选复选框的值?

4

3 回答 3

9

如果您有多个具有相同名称的表单元素,则需要将 param() 结果设置为数组。来自CGI101

my @colors = param('color');
foreach my $color (@colors) {
    print "You picked $color.<br>\n";
}
于 2012-04-26T18:01:46.943 回答
7
use strict; use warnings;
use CGI;

my $cgi = CGI->new;
my @opt = $cgi->param('Loc_opt');
于 2012-04-26T18:16:47.073 回答
2

请阅读CGI 模块的 Perl 文档。有一些简单的内置方法可以处理所有这些。

于 2012-04-26T17:57:21.100 回答