Tobias: HTML-Datei aus Perl-Script aufrufen

Hallo,

konkret behandelt das Skript eine Datenbankabfrage. Das Ergebnis wird mittels "open..." in eine Datei output.html geschrieben. Zu guter letzt soll das entsprechende CGI noch die generierte HTML-Datei aufrufen.
Wie lässt sich das realisieren ? Gibt es evtl. ein Problem bei mehreren parallelen Abfragen ?

  • Vielen Dank für Eure Antworten -
    Tobias
  1. Hallo Tobias,

    was willst du genau?
    open.html aus dem Perscript heraus öffnen oder es an den Browser schicken?
    Wenn du es an den Browser schicken willst, dann schreib doch gleich mit print in die
    Standartausgabe und die sache hat sich erledigt

    MfG

    Daniel

    1. Hallo Tobias,

      was willst du genau?
      open.html aus dem Perscript heraus öffnen oder es an den Browser schicken?
      Wenn du es an den Browser schicken willst, dann schreib doch gleich mit print in die
      Standartausgabe und die sache hat sich erledigt

      MfG

      Daniel

      Vielen Dank für die Antwort.

      Das mit der STDOUT ist sicherlich gut, so habe ich es bisher auch gemacht. DOch das neue Script soll wml behandeln. Wenn ich das Script aufrufe, bekomme ich die Fehlermeldung "invalid wml code" obwohl der header stimmen sollte die Datei sieht so aus: (Der wml-Code dient nur zum Test)

      #!/usr/bin/perl

      print "Content-type: text/plain", "\n\n";

      print "<?xml version=1.0?>\n";
      print "<wml>\n";
      print "  <template>\n";
      print "    <do type=prev>\n";
      print "      <prev/>\n";
      print "    </do>\n";
      print "  </template>\n";
      print "  <card title=title newcontext=true>\n";
      print "    <p>Was suchen Sie<br/></anchor>\n";
      print "    </p>\n";
      print "  </card>\n";
      print "</wml>\n";

      1. Hallo Tobias,

        print "Content-type: text/plain", "\n\n";

        Bist du dir sicher, daß der mimetype stimmt?
        text/plain heißt eigendlich normaler text.
        Versuch es lieber mal mit text/wml oder so was in der art.

        Tschüs

        Daniel

        1. Hallo Tobias,

          print "Content-type: text/plain", "\n\n";

          Bist du dir sicher, daß der mimetype stimmt?
          text/plain heißt eigendlich normaler text.
          Versuch es lieber mal mit text/wml oder so was in der art.

          Tschüs

          Daniel

          Hallo,

          habe schon alles versucht. Das "plain" ist ein Überbleibsel meiner vergebenen Versuche.

          Tobias

          1. Hallo Tobias,

            Klapt es mit einer Seite mit *.wml?
            Wenn ja, dann schau in der mime.types-datei deines Servers mal nach was da für *.wml steht

            Tschüs

            Daniel

  2. Hi,

    ich mache immer folgendes:

    ausgabe datei einlesen............
    in dieser datei sind sogenannte platzhalter <!--NAME--> (Comments)

    dann habe ich ein Array...mit folgenden Werte wie die Platzhalter heissen.
    Diese werden mittels Schleife und regulären Ausdrücken ersetzt.

    Danach nur Print"Content-Type:text/html\n\n";
    und den HTML-Code printen!

    weiss jetzt nicht ob du mir folgen kannst?

    Also:

    open (FILE, $FILENAME) or die;
          while (<FILE>){$TRASH .=$_;}
    close (FILE);

    @MEINEPLATZHALTER=('NAME','STRASSE');

    for (@MEINEPLATZHALTER){

    $PLATZHALTER="<!--".$_."-->";
         $TRASH=~ s/$PLATZHALTER/$DEINWERT/g;
    }

    print "content-type:text/html\n\n";
    print $TRASH;

    so das war ein Ansatz den Rest musst Du um was zulernen selbst heraus finden, oder einfach hier
    im Forum die Suche benutzen denn dort steht alles was du brauchst drin!

    Tool-pi

    1. hi nochmal

      hier der nachschlag:

      habe was wichtiges vergessen:

      deine Werte:

      z.b. in Array = @MEINEDATEN=('MEINNAME','Hier wohne ich');

      jetzt den regulären Ausdruck ändern in der Schleife:

      $TRASH=~ s/$MEINPLATZHALTER/{$MEINEDATEN[$i++]}/ge;

      e= führe PerlCode während des Matching aus!

      Wenn du nur auf eine HTML-Seite verweisen willst:

      print "Location: /deinedatei.html\n\n";

      Tool-pi

    2. Hi,

      ich mache immer folgendes:

      ausgabe datei einlesen............
      in dieser datei sind sogenannte platzhalter <!--NAME--> (Comments)

      dann habe ich ein Array...mit folgenden Werte wie die Platzhalter heissen.
      Diese werden mittels Schleife und regulären Ausdrücken ersetzt.

      Danach nur Print"Content-Type:text/html\n\n";
      und den HTML-Code printen!

      weiss jetzt nicht ob du mir folgen kannst?

      Also:

      open (FILE, $FILENAME) or die;
            while (<FILE>){$TRASH .=$_;}
      close (FILE);

      @MEINEPLATZHALTER=('NAME','STRASSE');

      for (@MEINEPLATZHALTER){

      $PLATZHALTER="<!--".$_."-->";
           $TRASH=~ s/$PLATZHALTER/$DEINWERT/g;
      }

      print "content-type:text/html\n\n";
      print $TRASH;

      so das war ein Ansatz den Rest musst Du um was zulernen selbst heraus finden, oder einfach hier
      im Forum die Suche benutzen denn dort steht alles was du brauchst drin!

      Tool-pi

      Hi,

      ja das hab‚ ich bisher auch immer gemacht, aber nun stehe ich vor folgendem Problem (s. Antwort unten)

      Tobias

  3. Hi Tobias,

    [...]

    konkret behandelt das Skript eine Datenbankabfrage. Das Ergebnis wird mittels "open..." in eine Datei output.html geschrieben. Zu guter letzt soll das entsprechende CGI noch die generierte HTML-Datei aufrufen.

    »» Wie lässt sich das realisieren ?

    Also, wenn du wirklich nur auf die Datei weiterleiten willst machst du das mit

    print "Location: http://$ENV{'SERVER_NAME'}/pfad/results.html\n\n";

    Gibt es evtl. ein Problem bei mehreren parallelen Abfragen ?

    Das wird das Problem sein, ja...  Wenn der Client etwas laenger braucht, um die Ergebnis-Datei aufzurufen, koennte bis dahin schon jemand anderes das Script aufgerufen haben, und somit auch andere Daten in die Datei geschrieben haben.
    Eine Loesung dafuer waere es, mehrere Dateien zu schreiben, und diese nach 5 Minuten wieder zu loeschen.

    Allerding sind wohl die Loesungen, die die anderen auch schon vorgeschlagen haben (das Script gibt die Daten direkt aus) wohl am besten.

    bis denn,
    bye,sebi