Peter Pan: Externe TXT-Datei durch Perl-Skript in HTML-Output einbinden

Ich benutze häufig den INCLUDE-Tag um in mehreren SHTML-Seiten wiederkehrende Bausteine (Navigation etc.) in externe TXT-Dateien auszulagern.

Nun habe ich ein Perl-Sktipt, dass per PRINT eine Seite auf dem Bildschirm ausgibt. Um diese im gleichen Layout, wie alle anderen seiten zu formatieren, müsste ich auch hier meine TXT-Dateien einbinden. Nur funktioniert INCLUDE natürlich nicht.

Gibt es eine einfache Möglichkeit, blanken ASCII-Text aus einer externen Datei in eine von einem Perl-Skript erzeugt HTML-Seite einzubinde?

  1. Joho,

    Gibt es eine einfache Möglichkeit, blanken ASCII-Text aus einer externen Datei in eine von
    einem Perl-Skript erzeugt HTML-Seite einzubinde?

    perldoc -f open, perldoc perlopentut

    open DAT, '<file.txt' or die $!;
    print while <DAT>;
    close DAT;

    gruesse,
     CK

    1. Joho,

      Gibt es eine einfache Möglichkeit, blanken ASCII-Text aus einer externen Datei in eine von
      einem Perl-Skript erzeugt HTML-Seite einzubinde?

      perldoc -f open, perldoc perlopentut

      open DAT, '<file.txt' or die $!;
      print while <DAT>;
      close DAT;

      gruesse,
      CK

      Das scheint zu klappen. Danke.

      Allerdings hatte ich zuerst auch die Zeile "perldoc -f open, perldoc perlopentut" mit in mein Skript kopiert. Das war wohl falsch, denn als ich sie wieder rausgenommen habe, hat es funktioniert.

      Da meine TXT-Datei nicht im CGI-Verzeichnis liegt, bin ich erstaunt, dass sie trotzdem gefunden wird. Wie dass?

      1. hi!

        perldoc -f open, perldoc perlopentut
        Allerdings hatte ich zuerst auch die Zeile "perldoc -f open, perldoc
        perlopentut" mit in mein Skript kopiert. Das war wohl falsch, denn als
        ich sie wieder rausgenommen habe, hat es funktioniert.

        Das ist aber nicht Christians Schuld, sondern deine, dass du nicht mal in
        der Lage bist, die Dokumentation zu bedienen, die zu der von dir verwendeten
        Software gehoert.

        open DAT, '<file.txt' or die $!;
        print while <DAT>;
        close DAT;
        Da meine TXT-Datei nicht im CGI-Verzeichnis liegt, bin ich erstaunt,
        dass sie trotzdem gefunden wird. Wie dass?

        Das aktuelle Verzeichnis ist bei CGI-Anwendungen nicht definiert. Alles
        weitere koennten wir nur raten, weil du uns keine weiteren Angaben zu deiner
        System-Umgebung gemacht hast.

        bye, Frank!

        1. Hallo Frank!

          Das ist aber nicht Christians Schuld, sondern deine, dass du nicht mal in
          der Lage bist, die Dokumentation zu bedienen, die zu der von dir verwendeten
          Software gehoert.

          Sorry, Frank, wenn ich diese Aussage als arrogant bezeichne. Wenn man Perl heruntergeladen und installiert hat, wo steht, dass man in der Kommandozeile perldoc -... eingeben muss, um die entsprechenden Seiten aus der Documentation zu lesen? Woher soll jemand, der mit Perl anfangen will, das dann wissen?

          Ich konnte lange Zeit mit sochen Hinweisen auf perldoc nichts anfangen, ebenso wenig wie scheinbar hier Peter Pan.

          Ausserdem noch folgendes: Ich habe auf dem Laptop eine ältere Perlversion, da kann ich z.B. perldoc -f open in der DOS-Box eingeben und bekomme den Text angezeigt. In der Version, die ich hier auf dem PC habe, und die neuer ist (von ActiveState), funktioniert das nicht.

          Dort ist zum ersten Mal (im Vergleich zu früheren Versionen) auch eine "ActivePerl.chm" (CHM-Hilfedatei, Windows-Hife-Format) vorhanden. Da kann man zwar auch suchen, und perlopentut habe ich zum Beispiel gefunden, perlfunc/open nach längerem Suchen auch.

          Wenn jetzt einer aber nicht weiß, dass -f für perlfunc steht, wie soll er denn mit dieser neuen Version nach "open" suchen?

          Patrick

          1. Wenn man Perl heruntergeladen und installiert hat, wo steht,
            dass man in der Kommandozeile perldoc -... eingeben muss, um
            die entsprechenden Seiten aus der Documentation zu lesen?

            http://aspn.activestate.com/ASPN/Reference/Products/ActivePerl/faq/ActivePerl-faq3.html#Where_can_I_get_documentation_on

            Ich konnte lange Zeit mit sochen Hinweisen auf perldoc nichts
            anfangen, ebenso wenig wie scheinbar hier Peter Pan.

            http://www.google.de/search?q=perldoc

          2. hi!

            Sorry, Frank, wenn ich diese Aussage als arrogant bezeichne.

            Was soll daran arrogant sein, wenn ich vorraussetze, dass die Leute
            die Dokumentation lesen bzw. dort zuerst nachschlagen, wenn sie
            irgendein beliebiges Programm -- zb. Perl -- verwenden wollen?

            Beim Verkauf von Videorekordern geht man ja auch davon aus, dass die
            Leute den zuhause mithilfe der Anleitung selbst an den Fernseher
            anschließen. Warum sollte das bei Software anders sein?

            Ausserdem noch folgendes: Ich habe auf dem Laptop eine ältere
            Perlversion, da kann ich z.B. perldoc -f open in der DOS-Box
            eingeben und bekomme den Text angezeigt. In der Version, die ich
            hier auf dem PC habe, und die neuer ist (von ActiveState),
            funktioniert das nicht.

            Kann ich nicht nachvollziehen: ich habe hier ein ActivePerl von Ende
            Oktober, da funktioniert es.

            Wenn jetzt einer aber nicht weiß, dass -f für perlfunc steht, wie
            soll er denn mit dieser neuen Version nach "open" suchen?

            Er gibt als Suchbegriff "open" ein. Bereits das zweite Ergebnis ist
            die perlfunc-Manpage. die erste ist perlopentut, also noch passender.

            bye, Frank!

            1. Hallo Frank!

              Was soll daran arrogant sein, wenn ich vorraussetze, dass die Leute
              die Dokumentation lesen bzw. dort zuerst nachschlagen, wenn sie
              irgendein beliebiges Programm -- zb. Perl -- verwenden wollen?

              An der Voraussetzung an sich ist nichts auszusetzen.  Nur: mit "perldoc -f open" als einziger Hinweis wissen die Wenigsten, nach dem sie Perl zum ersten Mal installiert haben, was es auf sich hat. Peter lieferte doch den Beweis: Er dachte, diese Zeichenfolge gehöre irgendwo ins Script rein!

              Kann ich nicht nachvollziehen: ich habe hier ein ActivePerl von Ende
              Oktober, da funktioniert es.

              Irgendwie verstehe ich das auch nicht recht... Ich habe Perl von der Installtionsdatei "ActivePerl-5.6.1.630-MSWin32-x86.msi", die ich am 20.11. gedownloadet habe, installiert. Und hier die Screenshots:

              <img src="http://www.atomic-eggs.com/temp/perldocfopen.gif" border=0 alt="">

              Nullo Erfolgo! Auf dem Laptop mit der älteren Perl-Version geht es!
              Andererseits geht das hier:

              <img src="http://www.atomic-eggs.com/temp/perldocfopen.gif" border=0 alt="">

              aber C:\Perl\bin\perldoc.bat -f PerlFunc führt wiederum zu nichts.

              Patrick

              1. Re!

                Hier lesen:

                Andererseits geht das hier:

                <img src="http://www.atomic-eggs.com/temp/nurperldoc.gif" border=0 alt="">

                aber C:\Perl\bin\perldoc.bat -f PerlFunc führt wiederum zu nichts.

                Patrick