2011-07-09 10 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"; 

EDITまた

、最初の行:

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

は、このあるべきスクリプトが間違って見えます。

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

これは、httpdではなく、Perlのパスにする必要があります。

EDIT 2

最後に、このすべてのあなたがあなたのスクリプトの最初の行の後に次の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

EDIT – mrk

+0

のテキストを参照してください。厳密には、Content-type:text/html \ r \ n \ r \ nである必要があります。 – mrk

2

あなたはそれがヘッダに\nあるべき\\nを書かれています。

ETA:また、perl -vはバージョンを取得するための非常に良い方法ではありません。変数$^Vには、より簡潔で特定のバージョン番号が含まれています。

関連する問題