Показать таблицу с помощью Perl CGI

0

Мне нужно отобразить файл в формате таблицы 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>";
Теги:

3 ответа

2
Лучший ответ

Программа CGI должна выводить заголовки HTTP до того, как она выведет любой контент. Как минимум, он должен предоставлять заголовок HTTP Content-Type.

Добавить:

my $q = CGI->new;
print $q->header('text/html; charset=utf-8');

... перед выходом любого HTML.

(Вы также должны написать допустимый HTML, поэтому включите Doctype и <title>).

2

Вы должны использовать модуль 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>
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>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню