pantera555: Problem:Mit PerlScript zusätzlich HTML Dateien erzeugen

Hi,
kann mir jeman verraten warum die HTML-Ausgabe am Ende des Scripts nicht auf dem Schirm erscheint?
Bei anderen Scripts hats funktioniert, nur hier führt er zwar die Operationen aus, stellt aber die Ausgabe nicht da.

require "cgi-lib.pl";
&parse_form;

$old = "e:/Xitami/webpages/eintrag/loeschen.htm";
$new =">e:/Xitami/webpages/eintrag/eintrag2.txt";
open (OLDFILE, $old) or die "Datei existiert nicht\n";
open (NEWFILE, $new);

$Satz = "";
while (<OLDFILE>)
{
chomp($Satz);
$Satz .= $_;
}
@Ergebnis = split(/<BR><BR>/, $Satz);

$Laenge =$#Ergebnis +1;
for ($i=-1; $i<$Laenge; $i++)
{
  if ($in{'loeschen'} == $i+1)
   {
    
    $Ergebnis[$i]=substr($Ergebnis[$i], 0, 1) = "   ";
    print NEWFILE "$Ergebnis[$i]";
    
    }
   print NEWFILE $Ergebnis[$i];

}  

print "Content-type: text/html\n\n";  
print "<HTML>\n";
print "<HEAD>\n";
print "<TITLE>Sicher</TITLE>\n";
print "<HEAD>\n";
print "<BODY bgcolor=dcdcb4>\n";
print "Eintrag wurde gelöscht, aktualisieren?\n";
print "<form method=get action=/cgi-bin/a.cgi>\n";
print "<INPUT NAME=loeschen TYPE=RADIO ALIGN=left VALUE=1>Aktualisieren?\n";
print "<INPUT type=submit value=Senden>\n";
print "</form>\n";
close (OLDFILE);
close (NEWFILE);

  1. Hi,

    kann mir jeman verraten warum die HTML-Ausgabe am Ende des Scripts nicht auf dem Schirm erscheint?

    nein, einen Fehler finde ich jedenfalls spontan nicht.

    Bei anderen Scripts hats funktioniert, nur hier führt er zwar die Operationen aus, stellt aber die Ausgabe nicht da.

    Was heißt "stellt nicht da"? Die Aussage, das Script würde etwas nicht machen, reicht nicht aus. Was macht es denn statt dessen? Internal Server Error? Was sagt das Error-Log? Was sagt perl -c script.pl? Was passiert, wenn Du "use CGI::Carp 'fatalsToBrowser';" am Anfang einfügst? Was passiert, wenn Du eine Dummy-Ausgabe an früheren Stellen des Scripts einfügst? _Wo_ bricht er ab (Dummy-Ausgabe verschieben)?

    Tut mir leid, aber auf "warum geht das nicht" kann man schwer antworten. Du mußt schon ein wenig Vorarbeit leisten. Und komplette Scripts zu posten zeigt nicht unbedingt, daß Du Dir diese Mühe gemacht hast.

    Cheatah

    1. Hi,

      Ausgeben sollte das Script den HTML Anhang unten am Script, wenn es seinen Zweck erfüllt hat.
      Wenn ich also bei dem Formular davor auf Submit drücke, sollte das Script dieses Formular in einzelne Listenelemente schneiden (tut es jetzt) und in die Eintrag2.txt schreiben. Nun sollte unmittelbar nach dem drücken des Submit-buttons nebenbei direkt eine HTML Ausgabe erfolgen, um am Schluß nicht vor einem weißen Bildschirm zu sitzten.

      also:
      perl -c meldet das der syntax ok wäre.
      das Script erfüllt seine Funktion, aber statt der HTML Ausgabe kommt der übliche weiße Bildschirm.
      Abbrechen tut es auch nirgens (das bringt mich ja so zum grübeln, sonst wüßte ich ja wenigstens wo ungefähr was nicht stimmt)

      danke

      1. Hi,

        das Script erfüllt seine Funktion, aber statt der HTML Ausgabe kommt der übliche weiße Bildschirm.

        was ist denn bitte der "übliche weiße Bildschirm"?! Üblich ist eigentlich, irgendwas anderes als nur einen weißen Bildschirm zu kriegen. Hast Du mal den Quelltext der Ausgabe im Browser überprüft?

        Eine andere Seite kannst Du übrigens folgendermaßen ausgeben:

        print "Location: http://www.domain.de/path/to/file.html\n\n";

        Statt des Content-type und dem Rest. Bitte eine komplette URI angeben (mit http und allem), nicht einfach relative Pfade.

        Cheatah

    2. Hi,

      Wenn sich da keine Lösung finden sollte, gibt es dann eine Möglichkeit wenn ein Script fertig ist automatisch eine bestimmte HTML Seite aufzurufen?
      Angenommen ich erstelle dann keine Ausgabe sondern linke auf eine bereits vorhandene Seite -geht das?

      danke

  2. Hallo

    @Ergebnis = split(/<BR><BR>/, $Satz);

    $Laenge =$#Ergebnis +1;

    Ganz spontan gefragt:
    $Laenge =$#Ergebnis +1;
              ^ muss das '#' hier stehen ?

    Wenn ja, was würde dies bedeuten?
    Mal von einem Komentar in Perl abgesehen, was aber zu einer nicht terminierten Zeile führen wird ???

    Zu deiner anderen Frage.
    Du kannst natürlich die Seite in eine Datei schreiben und dann mit dem HTTP-Befehl Location die Seite zum Browser senden:

    print "Content-type: text/html\n\n";
    print "Location: http://www.w3.org/pub/WWW/People.html\n";

    Grüsse

    Tom

    1. Korrektur !!!

      print "Content-type: text/html\n\n";
      print "Location: http://www.w3.org/pub/WWW/People.html\n";

      Wie ich gerade im Posting von Cheatah lese, braucht es den Content-Type nicht.
      Also nur so:
      print "Location: http://www.w3.org/pub/WWW/People.html\n\n";

      Man kann sich ja mal irren ;-(
      Grüsse

      Tom

  3. kann mir jeman verraten warum die HTML-Ausgabe am Ende des Scripts nicht auf dem Schirm erscheint?

    open (OLDFILE, $old) or die "Datei existiert nicht\n";
    ...
    while (<OLDFILE>)
    print "Content-type: text/html\n\n";

    Erst die Fehlermeldung mit "die" und danach den Content-Type? Das wird nicht funktionieren ...