Мне нужно отобразить файл в формате таблицы 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>";
Программа CGI должна выводить заголовки HTTP до того, как она выведет любой контент. Как минимум, он должен предоставлять заголовок HTTP Content-Type.
Добавить:
my $q = CGI->new;
print $q->header('text/html; charset=utf-8');
... перед выходом любого HTML.
(Вы также должны написать допустимый HTML, поэтому включите Doctype и <title>
).
Вы должны использовать модуль CGI
после его загрузки. Это упрощает выполнение правильных правил для HTTP-страницы.
Как уже отмечалось, вам нужно распечатать HTTP-заголовок перед телом HTML, и вы можете сделать это с print $cgi->header
который по умолчанию print $cgi->header
тип содержимого text/html
и набор символов ISO-8859-1
, что достаточно для многих простых HTML-страниц. Он также генерирует элемент <meta>
внутри HTML, который содержит ту же информацию.
Эта короткая программа показывает эту идею. Я добавил тривиальную таблицу, которая показывает, как вы могли бы включить это на странице. Как вы можете видеть, код 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>