2014-02-26 88 views
0

我必須以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>"; 

回答

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頁面的正確規則變得更加簡單。

如已經觀察到的,你需要的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> 
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>