我必须以HTML表格格式显示文件。
我尝试了这个,但我无法获得任何输出。
use CGI qw(:standard);
my $line;
print '<HTML>';
print "<head>";
print "</head>";
print "<body>";
print "<p>hello perl am html</p>";
print "</body>";
print "</html>";
答案 0 :(得分:2)
CGI程序必须在输出任何内容之前输出HTTP标头。它至少必须提供HTTP Content-Type标头。
添加:
my $q = CGI->new;
print $q->header('text/html; charset=utf-8');
...在输出任何HTML之前。
(您还应该编写有效的HTML,因此请包含Doctype和<title>
)。
答案 1 :(得分:2)
加载后,您应使用 CGI
模块。这使得遵循HTTP页面的正确规则变得更加简单。
正如所观察到的,您需要在HTML正文之前打印HTTP标头,并且您可以使用print $cgi->header
执行此操作,默认情况下指定内容类型text/html
和字符集{ {1}},适用于许多简单的HTML页面。它还在HTML中生成包含相同信息的ISO-8859-1
元素。
这个简短的节目表明了这个想法。我添加了一个简单的表格,显示了如何在页面中包含它。如您所见,<meta>
代码比相应的HTML简单得多。
CGI
<强>输出强>
use strict;
use warnings;
use CGI qw/ :standard /;
print header;
print
start_html('My Title'),
p('Hello Perl am HTML'),
table(
Tr([
td([1, 2, 3]),
td([4, 5, 6]),
])
),
end_html
;
答案 2 :(得分:0)
这个怎么样:
use CGI;
use strict;
my $q = CGI->new;
print $q->header.$q->start_html(-title=>'MyTitle');
my $tableSettings = {-border=>1, -cellpadding=>0, -cellspacing=>0};
print $q->table($tableSettings, $q->Tr($q->td(['column1', 'column2', 'column3'])));
print $q->end_html;
输出:
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>MyTitle</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<table border="1" cellspacing="0" cellpadding="0"><tr><td>column1</td> <td>column2</td> <td>column3</td></tr></table>
</body>
</html>