我必須以HTML表格格式顯示文件。使用Perl顯示錶格CGI
我試過這個,但是我不能得到任何輸出。
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>";
我必須以HTML表格格式顯示文件。使用Perl顯示錶格CGI
我試過這個,但是我不能得到任何輸出。
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>";
CGI程序在輸出任何內容之前必須輸出HTTP標頭。至少,它必須提供一個HTTP Content-Type標頭。
地址:
my $q = CGI->new;
print $q->header('text/html; charset=utf-8');
...你輸出任何HTML之前。
(你也應該寫有效的HTML,所以包括一個Doctype和<title>
)。
你應該使用CGI
模塊一旦你加載它。這使得遵循HTTP頁面的正確規則變得更加簡單。
如已經觀察到的,你需要的HTML體之前打印的HTTP報頭,並且可以做到這一點與print $cgi->header
默認爲指定的text/html
內容類型和字符集的ISO-8859-1
,這是足夠的許多簡單HTML頁面。它還會在包含相同信息的HTML中生成一個<meta>
元素。
這個簡短的程序顯示了這個想法。我添加了一個簡單的表格,顯示如何在頁面中包含該表格。正如你所看到的,CGI
代碼比相應的HTML簡單得多。
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
;
輸出
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>My Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<p>Hello Perl am HTML</p><table><tr><td>1</td> <td>2</td> <td>3</td></tr> <tr><td>4</td> <td>5</td> <td>6</td></tr></table>
</body>
</html>
如何:
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>