在打印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>
答案 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,那就更好了。