kleines Problem mit print<<END; ...

Alles, was Perl betrifft, kann hier besprochen werden.

kleines Problem mit print<<END; ...

Postby Thomas_uth » 30. September 2003 11:01

Hallo zusammen

Ich verstehe da eine Fehlermeldung nicht, wo ihr mir sicher weiterhelfen könnt.

Mein Sub-Programm sieht folgendermassen aus:

&Frage_Typ1(\@fragen, \@min, \@max, \$qname);

sub Frage_Typ1 {
my ($ref_Frage, $ref_Min, $ref_Max, $ref_Qname) = @_;
my @Frage = @$ref_Frage;
my @Min = @$ref_Min;
my @Max = @$ref_Max;
my $Qname = $$ref_Qname;
my $ii = 1;
my $Frage;
my $Min;
my $Max;
print '<table width="100%" border="0">';
while (@Frage){
$Frage = pop @Frage;
$Min = pop @Min;
$Max = pop @Max;
if ($ii % 2 == 1) {
print '<tr bgcolor="#eeeeee">';
} else {
print '<tr>';
}
print <<END;
<td width="40%">$Frage</td>
<td width="15%" align="right">$Min</td>
<td width="6%" align="center"><input type="radio" name=$Qname value="1"></td>
<td width="6%" align="center"><input type="radio" name=$Qname value="2"></td>
<td width="6%" align="center"><input type="radio" name=$Qname value="3"></td>
<td width="6%" align="center"><input type="radio" name=$Qname value="4"></td>
<td width="6%" align="center"><input type="radio" name=$Qname value="5"></td>
<td width="15%" align="left">$Max</td>
</tr>
END
$ii++;
}
print '</table>';
}


Wenn ich das Programm mit dem obigen Sub-Programm aufrufe entsteht folgende Fehlermeldung:

[...] Premature end of script headers: MyPoll2.pl
[...] Can't find string terminator "END" anywhere before EOF at C:/Programme/xampp/cgi-bin/MyPoll2.pl line 183.


Wenn ich das Sub-Programm ohne den Teil print<<END; bis END aufrufe klappt alles (natürlich fehlt der gewünschte Teil).

Die Fehlermeldung verstehe ich überhaupt nicht. END ist ja vorhanden! Wieso findet er dann das abschliessende END nicht????


Wäre froh, um jegliche Hilfe

Besten Dank

Thomas

ps: auch sonstige Verbesserungsvorschläge sind willkommen
Thomas_uth
 

Postby Oswald » 30. September 2003 12:41

Hallo Thomas!

Ist vielleicht hinter dem END ein Leerzeichen oder zwei?

Lieben Gruß,
Oswald
User avatar
Oswald
Apache Friends
 
Posts: 2718
Joined: 26. December 2002 19:51
Location: Berlin, Germany
Operating System: Linux

Postby Thomas_uth » 30. September 2003 13:10

Hallo Kai

"Ist vielleicht hinter dem END ein Leerzeichen oder zwei? "

Ja tatsächlich!! Da war ein Leerzeichen!
Funktioniert nun wie gewünscht (da kann ich meine prints auf jeder Zeile wieder löschen).

Du kannst mir wahrscheinlich auch noch etwas anderes beantworten.

Wieso muss END immer am Anfang der Zeile stehen? Perl sollte doch eigentlich genug gut sein, um diese Zeichenkette auch sonst wo in der Zeile zu finden (oder stimmt das gar nicht, oder kann das irgendwie verändert werden?). Der Emacs (GNU für Windows) formatiert mir das END immer falsch (Positionierung), was etwas nervend ist.


Vielen Dank für deine Hilfe

Thomas
Thomas_uth
 


Return to Perl

Who is online

Users browsing this forum: No registered users and 3 guests

cron