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

je reçois cette erreur:Fin prématurée des en-têtes de script (Perl)

Premature end of script headers: version.cgi

Répondre

6

Vous devez retirer la barre oblique inverse supplémentaire

Ce code:

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

devrait être ceci:

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

EDIT

En outre, la première ligne dans la le script a l'air faux.

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

Ceci devrait être le chemin vers Perl, pas httpd.

EDIT 2

Enfin, ce tout aurait été plus facile pour vous de résoudre si vous avez ajouté ces deux lignes après la première ligne dans votre script:

use strict; 
use warnings; 

et exécutez le script sur la ligne de commande avec les indicateurs -c -w pour compiler-vérifier et les avertissements-vérifier votre script, à savoir perl -cw yourscript.cgi. Cela vous donnera des numéros de ligne d'erreurs et d'avertissements dans votre script.

Au total, votre script pourrait ressembler à ceci:

#!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

Changé, mais toujours la même erreur! – 3zzy

+0

Voir le texte sous EDIT – mrk

+0

Aussi, à proprement parler, devrait être 'Content-type: texte/html \ r \ n \ r \ n' – mrk

2

Vous avez écrit \\n où il devrait être \n dans l'en-tête. ETA: En outre, perl -v n'est pas un très bon moyen d'obtenir la version. La variable $^V contient un numéro de version plus succinct et spécifique.

Questions connexes