Halihallo Arthur
<form action="cgi-bin\guestbook.pl" name="questbook" target="_top" method="post" enctype="multipart/form-data">
Du sagst, dass guestbook.pl angezeigt wird und dir ist das nicht klar? - Hier steht's ja. Du übermittelst die Formulareingaben _an_ guestbook.pl, was dieses damit macht, ist seine Sache, aber das guestbook.pl bleibt in jedem Fall in der Adresszeile.
my $cgi = new CGI;
my @name = $cgi->param('name');
my $name = $cgi->param('name');
oder hat eine Person mehrere Namen? - Du hast nur Eingabefeld namens 'name' im Formular, ein Array ist hier unlogisch.
my @kommentar = $cgi->param('kommentar');
s. oben
open(DATEI, "<neu.html");
du hast oben so schön mit einfachen Quotes gearbeitet, warum hier ein double quote? - Das ist aperformant.
push(@alt,"<!-- NEU -->\n");};
hier macht der double quote frühestens Sinn!
open(DATEI, "<neu.html");
$, = "<br>";
print "@neu";
das funktioniert zwar, print join('<br>', @neu) ohne das $,='<br>' wäre jedoch wesentlich schöner.
close(DATEI);
Hier gibst du die neue neu.html aus. Warum meinst du, dass dies in der Adresszeile angezeigt werden soll? - Der Browser sieht nur eines, nämlich eine HTML Datei, die von _guestbook.pl_ kommt.
Zudem hast du den HTTP-Header vergessen => das führt immer zu einem Fehler. Du musst mindestens den Content-Type ausgeben, sonst weiss der Browser gar nicht, wie er deine Seite ausgeben soll.
also: print 'Content-Type: text/html'."\015\012" x 2;
am Anfang.
Viele Grüsse
Philipp
PS: Wenn du dich wunderst, warum keine neuen Postings gespeichert werden: Du musst @neu auch in der Datei speichern!