Forms 如何在PERL-CGI中读取多个复选框

Forms 如何在PERL-CGI中读取多个复选框,forms,perl,cgi,Forms,Perl,Cgi,我有一个表单,有多个复选框(所有适用的),我试图读取所有选择的值…用户点击提交它重新加载页面并检查“post”,如果是一个新条目…但它只读取第一个选择的值,我不知道我做错了什么/ <label class="checkbox-inline"><input type="checkbox" name="sections" value="Cars">Cars</label> <label class="checkbox-inline"><input

我有一个表单,有多个复选框(所有适用的),我试图读取所有选择的值…用户点击提交它重新加载页面并检查“post”,如果是一个新条目…但它只读取第一个选择的值,我不知道我做错了什么/

<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cars">Cars</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Trucks">Trucks</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Airplanes">Airplanes</label>
<label class="checkbox-inline"><input type="checkbox" name="sections" value="Cell Phones">Cell Phones</label> 

sub post
{ 
  if($id1 == 'active')
  my @sections = $POST->{sections}->[0];

}
汽车
卡车
飞机
手机
副邮政
{ 
如果($id1==“活动”)
my@sections=$POST->{sections}->[0];
}

您的代码中有几个明显的问题

  • 当您尝试进行字符串比较时,使用的是
    ==
    。改用
    eq
  • 您的
    if
    语法错误。在Perl中,如果(…){…},则需要使用大括号-
  • 您显式地从复选框数组中请求第一个元素。您需要
    @{$POST->{sections}
    来获取所有值
  • 总之,您的子例程应该如下所示:

    sub post
    { 
      if ($id1 eq 'active') {
        my @sections = @{ $POST->{sections} };
        # Do something else with @sections
      }
    }
    

    此外,我希望你们认真考虑在2019年使用CGI。请阅读并思考使用更现代的技术。

    什么是
    $POST
    ?这不是CGI.pm的一部分。您的代码有语法错误。请回答您的问题并显示您的真实代码。是的,在发布问题后,我注意到为什么我刚刚获得数组的第一个值的错误…非常感谢您的帮助和提示