为什么CGI没有显示输入字段的标签

时间:2015-03-23 08:44:17

标签: html perl cgi

我是perl CGI的新手,想要为用户输入创建一个CGI表单。问题是代码没有输出字段名称。

以下是代码:

#!/usr/bin/perl -T

use strict;
use warnings;
use diagnostics;
use CGI;
my $cgi = CGI->new;
print $cgi->header(),
$cgi->start_html(
    -title => "my form",
),
$cgi->p(scalar localtime),

$cgi->p("welcome to myform"),
$cgi->start_form({
    -action =>"",
    -method =>"",
});
print $cgi->textfield({
    -label => "Username :",
    -type => 'text',
    -size=>30,});

$cgi->end_form(),

$cgi->end_html();

在上面的例子中,我希望html输出显示用户名的标签。

1 个答案:

答案 0 :(得分:2)

CGI模块不支持-label元素的textfield属性。相反,您必须将其封装在单独的<label>元素中,如此

print $cgi->label(
  'Username :',
  $cgi->textfield({
    -type => 'text',
    -size=>30,})
);

但请注意the module's own documentation中警告 不应再使用

  

不再维护CGI.pm中的所有HTML生成功能。任何问题,错误或补丁都将被拒绝,除非它们与基本破坏的页面呈现有关。

     

这个的基本原理是CGI.pm的HTML生成功能充其量是混淆,最糟糕的是维护噩梦。您应该使用模板引擎来更好地分离关注点。有关将{CGI.pm与CGI::Alternatives模块一起使用的示例,请参阅Template::Toolkit