使用Perl CGI显示表

时间:2014-02-26 15:15:58

标签: html perl

我必须以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 个答案:

答案 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>