[...]
also, wieso wird hier die gaestebuch.html mit dem Eintrag ueberschrieben, statt den Gaestebucheintrag hinter das <!--begin-->
for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--begin-->/) {
Dieser reguläre Ausdruck prüft nur, ob <!--begin--> vorhanden ist. Wenn ja, wird sofort losgeschrieben.
print OUTFILE "
zu schreiben ? mit >>$outfile statt >$outfile wuerde ja das abschließende </body></html> am ende der gaestebuch.html an der falschen stelle sein, da die Eintraege einfach an das ende der datei angehaengt werden wuerden, aber wieso wird die gaestebuch.html mit >$outfile gerade ersetzt ?
Schau doch die Argument an, die du open() übergibst! Da steht weder ">$outfile", noch ">>$outfile", sondern
"open(FILE,"$outfile")
Du hast also den Modus zum Öffnen der Datei nicht spezifiziert. Wolltest du aber! Siehe hierzu </selfhtml/tgcj.htm>.
Hier ein sinnvoller Regexp:
s/<!--begin-->/&eintrag<!--begin-->/ while (OUTFILE);
OUTFILE muss zum Lesen _und_ Schreiben offen sein
sub eintrag {
return <<"FERTIG";
<p>
Am $date schrieb <b>$in{'username'}</b>
(E-Mail: <a href=mailto:$in{'email'}>$in{'email'}</a>)
das folgende in unser Gästebuch.
</p><p>
Kommentar:<br>
<b>$in{'Kommentar'}</b>
</p><p>
Homepage: <a href="$in{'website'}">$in{'website'}</a>
</p><p>
<div align="right">
<font size="-2">IP: $ENV{'REMOTE_ADDR'}</font>
</div>
</p>
<hr size=1>
FERTIG
}
Deine vielen \n kannst du dir übrigens sparen. Sie sind i.d.R.
nur im HTML-Quelltext, jedoch nicht im formatierten TExt zu sehen.
[...]
So, und jetzt muss ich dir doch (so leid es mir tut) einen kleinen Anschiss erteilen: Warum zum Hacker benutzt du weder CGI.pm noch Hier-Dokumente?! Mit CGI.pm wäre alles _viel_ einfacher. Du könntest dir u.a. die Subroutine &parse_form sparen. Und &eintrag wäre auch übersichtlicher:
sub eintrag {
my $eintrag = '';
$eintrag .= p(
"Am $date schrieb", # Variableninterpolation
b( param('username') ),
'(E-Mail:',
a({ -href => "mailto:param('email')" },# Variableninterpolation
param('email')
),
'das Folgende in unser Gästebuch:'
);# Der erste Absatz ist jetzt fertig.
$eintrag .= p(
'Kommentar'. #Stringverkettung
br(). #Stringverkettung
'Kommentar:'.#Stringverkettung
br(). #Stringverkettung
b( param('Kommentar') )
);# Zweiter Absatz ist fertig.
$eintrag .= p(
'Homepage:',
a({ -href => $param('website) },
$param('website)
)
);# dritter Absatz ist fertig.
$eintrag .= p(
div({ -align => 'right' },
font({ -size => 2 },
'IP:',
$ENV{'REMOTE_ADDR'}
)# Ende des font-Tags
)# Ende des div-TAgs
);# Ende des dritten Absatzes.
$eintrag .= hr({ size => 1 });
return $eintrag;
}
mfg: <a href="http://www.8ung.at/hellofweb">azrael</a>
Hell of Web ;-) :-o