如何在 Perl CGI 中使用`meta`?

问题描述 投票:0回答:3

Per 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" />
perl cgi
3个回答
4
投票

当您

meta
时,不会自动导入
use CGI;
子项。尝试使用

use CGI "meta";

(或

":all"
)。


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 进行 Web 开发而不是更好的东西,例如 PSGI/Plack?


1
投票

这篇文章很老了,但解决方案很简单:元是对象 $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'));

我只是在meta的fromt中添加了$cgi->。

© www.soinside.com 2019 - 2024. All rights reserved.