我是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输出显示用户名的标签。
答案 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。