2011-07-09 94 views
1
#!C:\xampp\apache\bin\httpd.exe 
$command=`perl -v`; 
$title = "Perl Version"; 

print "Content-type: text/html\\n\\n"; 
print "<html><head><title>$title</title></head><body>"; 

print " 
<h1>$title</h1> 

\n"; 
print $command; 

print "</body></html>"; 

過早結束我得到這個錯誤:腳本頭(Perl的)

Premature end of script headers: version.cgi

回答

6

您需要刪除多餘的反斜槓

此代碼:

print "Content-type: text/html\\n\\n"; 

應該是這樣的:

print "Content-type: text/html\n\n"; 

編輯

此外,在第一線腳本看起來不對。

#!C:\xampp\apache\bin\httpd.exe 

這應該是Perl的路徑,而不是httpd。

EDIT 2

最後,這一切都將是您更容易解決,如果你在你的腳本的第一行後添加以下兩行:

use strict; 
use warnings; 

而且上運行腳本帶-c -w標誌的命令行進行編譯檢查和警告 - 檢查你的腳本,例如perl -cw yourscript.cgi。這會給你腳本中的行數和錯誤和警告。

總之,你的腳本可能會是這樣的:

#!C:\path\to\perl.exe 

use strict; 
use warnings; 

my $command=$^V; 
my $title = 'Perl Version'; 

print "Content-type: text/html\r\n\r\n"; 
print " 
<html><head><title>$title</title></head><body> 

<h1>$title</h1> 

$command 

</body></html>"; 
+0

改變了這一切,但仍是同樣的錯誤! – 3zzy

+0

請參閱編輯 – mrk

+0

下的文本嚴格來說,應該是'Content-type:text/html \ r \ n \ r \ n' – mrk

2

你已經寫\\n地方應該是在頭\n

ETA:另外,perl -v不是獲取版本的好方法。變量$^V包含更簡潔明確的版本號。