perl脚本不关闭体?

时间:2014-09-15 17:43:14

标签: html perl tags

在打印HTML的示例脚本中,我认为body标签未关闭。但是我以前从未有过使用Perl的经验。这个例子不正确吗?还是还有其他东西意味着身体被关闭了?

print "Content-type: text/html\n\n";
print "<html>\n<head>\n<title>\nPerl CGI
Example\n</title>\n<body>\n<h1>Hello,
World!</h1>\nYour user agent is: <b>\n";
print $cgi_object->user_agent();
print "<b>.</html>\n";

如果最后一行有.,我认为它应该是</body>

1 个答案:

答案 0 :(得分:2)

您没有遗漏任何内容,该代码根本不会为body元素生成结束标记,但该标记(与丢失的Doctype不同)在HTML中是可选的,因此该元素将在浏览器关闭时关闭解析html元素的结束标记。

最好写一些更像这样的东西:

#!/usr/bin/env perl

use strict;
use warnings;
use CGI;
use Template;

my $cgi = CGI->new();
print $cgi->header(-charset => 'utf-8');
my $ua = $cgi->user_agent();

my $tt = Template->new();

$tt->process(\*DATA, { ua => $ua });

__END__
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <title>Perl CGI Example</title>
    </head>
    <body>
        <h1>Hello, World!</h1>
        <p>Your user agent is: <em>[% ua | html %]</em>.</p>
    </body>
</html>

如果您放弃CGI并使用PSGI/Plack,那就更好了。