Perl CGI Meta标签

时间:2011-05-28 05:39:04

标签: perl cgi

http://perldoc.perl.org/CGI.html生成元标记,给出以下示例:

print start_html(-head=>meta({-http_equiv => 'Content-Type',-content => 'text/html'}))

但是使用以下代码:

#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $cgi = new CGI;
$cgi->autoEscape(undef);
$cgi->html({-head=>meta({-http_equiv => 'Content-Type',-content => 'text/html',-charset=>'utf-8'}),-title=>'Test'},$cgi->p('test'));

我收到以下错误:

  

$ perl test.cgi未定义的子程序   & main :: meta在test.cgi第8行调用。

我正在尝试生成以下标记:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

3 个答案:

答案 0 :(得分:4)

meta时,系统不会自动导入use CGI;子。试试

use CGI "meta";

(或":all")。

答案 1 :(得分:4)

#!/usr/bin/perl
use strict;
use warnings;
use CGI qw(:all);

my $cgi = new CGI;
$cgi->autoEscape(undef);
$cgi->charset('utf-8');
print
    $cgi->start_html(
        -head  => meta({-http_equiv => 'Content-Type', -content => 'text/html'}),
        -title => 'Test'
    );

但是,你是否100%肯定而不是想用CGI进行网页开发而不是更好的东西,比如PSGI / Plack?

答案 2 :(得分:1)

这篇文章很老但是解决方案很简单:meta是对象$ cgi的一种方法,所以将它用作方法。

你的例子

#!/usr/bin/perl
use strict;
use warnings;
use CGI;

my $cgi = new CGI;
$cgi->autoEscape(undef);
$cgi->html({-head=>$cgi->meta({-http_equiv => 'Content-Type',-content=>'text/html',-charset=>'utf-8'}),-title=>'Test'},$cgi->p('test'));

我只是添加了$ cgi-&gt;来自meta。