Bernhard Peissl: Datei im root-Verzeichnis einlesen

Hi!

Es gibt irgendeinen Grund, warum Perl das nicht mag:

open  (TOP, "/top.txt");
while ($line = <TOP>) { print $line; }
close (TOP);

Nur weiss ich nicht wieso :-(

Nun, ja, ich kanns mir schon denken! Ich will eine Datei die im Rootverzeichnis liegt öffnen und gleich ausgeben, wie sag ich dem Server das ?

Gibts da eventuell einen Trick, wie mans dennoch hinkriegt?

schöne Grüsse
Bernhard

  1. Moin,

    Es gibt irgendeinen Grund, warum Perl das nicht mag:

    open  (TOP, "/top.txt");
    while ($line = <TOP>) { print $line; }
    close (TOP);

    Nur weiss ich nicht wieso :-(

    naja, Perl weiß halt nicht, ob Du von der Datei lesen oder
    was in sie hineinschreiben möchtest (oder ob die
    Datei ausführbar ist und Du ihr etwas pipen möchtest etc....).
    Probier mal

    open (TOP, "</top.txt");

    Viele Grüße

    Andreas

    1. Hallo,

      naja, Perl weiß halt nicht, ob Du von der Datei lesen oder
      was in sie hineinschreiben möchtest (oder ob die
      Datei ausführbar ist und Du ihr etwas pipen möchtest etc....).
      Probier mal

      open (TOP, "</top.txt");

      Perl weiß ganz genau, was er möchte, nähmlich von der Datei lesen. Wenn nur der Dateiname angegeben ist, dann heißt das für Perl eben, lesen ist angesagt.

      open (TOP, "</top.txt");

      und

      open (TOP, "/top.txt");

      ist vollkommen gleichwertig, zwiteres nur um ein Zeichen kürzer ;-)

      Grüße
        Klaus

    2. Hallo!

      »»   open (TOP, "</top.txt");

      Habs ausprobiert - nix genutzt!

      Meiner Meinung nach macht er sie auch mit "/top.txt" zum lesen auf.
      Ich verwende das öfters, und es gab noch keine Klagen ;-)

      schöne Grüsse
      Bernhard

  2. Hallo,

    Es gibt irgendeinen Grund, warum Perl das nicht mag:

    open  (TOP, "/top.txt");
    while ($line = <TOP>) { print $line; }
    close (TOP);

    Nein, Perl mag das schon, ob es das OS auch zuläßt, steht auf einem anderen Blatt. Du solltest Dir angewöhnen, eventuell auftretende  Fehler abzufangen. Ich sag  jetzt nur 'open or die'.

    Nur weiss ich nicht wieso :-(

    Werte die Fehlermeldung aus, welche Perl für Dich parat hält.

    Nun, ja, ich kanns mir schon denken! Ich will eine Datei die im Rootverzeichnis liegt öffnen und gleich ausgeben, wie sag ich dem Server das ?

    open  (TOP, "/top.txt");
    while ($line = <TOP>) { print $line; }
    close (TOP);

    Allerdings mit Fehlerbehandlung ;-)

    Gibts da eventuell einen Trick, wie mans dennoch hinkriegt?

    Tricks gehören in eine Zaubershow, nicht in ein Programm ;-)
    Ich vermute, daß es sich um ein Rechte-Problem handelt. Wenn der Sysadmin nicht will, daß Du die Datei lesen kannst, dann wird er wahrscheinlich wissen warum. Die einzige Möglichkeit besteht darin, den Sysadmin zu fragen, ob er Dir Leserechte für diese Datei gibt.

    Grüße
      Klaus

    1. Hallo Klaus

      Nein, Perl mag das schon, ob es das OS auch zuläßt, steht auf
      einem anderen Blatt. Du solltest Dir angewöhnen, eventuell
      auftretende  Fehler abzufangen. Ich sag  jetzt nur 'open or die'.

      Mach ich eh immer, habs hier nur weggelassen.

      Werte die Fehlermeldung aus, welche Perl für Dich parat hält.

      Die vielsagende Fehlermeldung lautet:

      C:\httpd\Cgi-Bin\kurse>perl showKurse.pl >x.x
      (offline mode: enter name=value pairs on standard input)
      lva_bereich=ausbildung
      lva_gruppe=pr
      wKurse.pl line 55. <== Ausagekräftig ?

      line 55 ist übrigens die while-Schleife!

      Ich vermute, daß es sich um ein Rechte-Problem handelt. Wenn der
      Sysadmin nicht will, daß Du die Datei lesen kannst, dann wird er
      wahrscheinlich wissen warum. Die einzige Möglichkeit besteht
      darin, den Sysadmin zu fragen, ob er Dir Leserechte für diese
      Datei gibt.

      Das Betriebssystem ist Win98 und der Sysadmin bin ich ;-)
      Das Script wird also von hinten bis vorne verhätschelt.
      Es bekommt alles was es will ;-)

      schöne Grüsse
      Bernhard

      1. Hallo Bernhard,

        wKurse.pl line 55. <== Ausagekräftig ?

        line 55 ist übrigens die while-Schleife!

        Kann es eventuell an Sonderzeichen liegen? Was steht in x.x? was in der Datei? Öffnen kannst Du sie ja anscheinend. Schau mal wie weit das Script mit dem Einlesen kommt.
        Die verstümmelte (nicht gerade aussagekräftige) Meldung deutet auf '\r' oder '\b' hin. Na ich weiß nicht, kann ich so nicht sagen, was da wirklich los ist :-((

        Das Betriebssystem ist Win98 und der Sysadmin bin ich ;-)

        Da ist mir gerade ein Spruch von einem Gendarmen eingefallen, der mich einmal nur so zum Spaß angemault hat, worauf ich ihm sagt, daß ich mich bei seinem Vorgesetzten deswegen beschweren werde. Und er sagte : " Da Schef bin I!" ;-)

        Das Script wird also von hinten bis vorne verhätschelt.
        Es bekommt alles was es will ;-)

        Vielleicht hast Du es schon zu viel verwöhnt ;-)

        Grüße
          Klaus

        1. Hallo Klaus,

          Kann es eventuell an Sonderzeichen liegen? Was steht in x.x? was in der Datei? Öffnen kannst Du sie ja anscheinend. Schau mal wie weit das Script mit dem Einlesen kommt.

          • Sonderzeichen gibts keine
          • in x.x steht die Seite, allerdings ohne top.txt
          • Öffnen kann ich sie nicht! Dort wo der Inhalt von top.txt stehen sollte ist nur ein grosser weisser Fleck :-(
          • Das Script kommt erst gar nicht zum einlesen!

          Wenn ich die top.txt in das CGI-Verzeichnis lege, in dem das script liegt, dann klappts [open(TOP, "top.txt");]

          Das ganze Procedere soll mir übrigens html-Dateien, die ich sonst, in statischen Seiten, über SSI einbinde, in die dynamisch erzeugten Seiten einbinden!

          Daher wärs blöd, wenn ich jedesmal, wenn ich was an diesen files ändere, daran denken müsste, sie auch noch in den CGI-BIN zu legen :-(

          Da ist mir gerade ein Spruch von einem Gendarmen eingefallen, der mich einmal nur so zum Spaß angemault hat, worauf ich ihm sagt, daß ich mich bei seinem Vorgesetzten deswegen beschweren werde. Und er sagte : " Da Schef bin I!" ;-)

          Wo kommst du denn her, muss ja tiefste Einschicht sein. Sowas gibts nur am Land! - Hintertupfing?

          Das Script wird also von hinten bis vorne verhätschelt.
          Es bekommt alles was es will ;-)
          Vielleicht hast Du es schon zu viel verwöhnt ;-)

          Na, ich hoffe, wenn ich recht nett bin zu ihm, dann ist es auch nett zu mir ;-)

          schöne Grüsse aus Wien
          Bernhard

          • der eigentlich auch aus der Provinz kommt ;-)
          1. Hallo Bernhard,

            Daher wärs blöd, wenn ich jedesmal, wenn ich was an diesen files ändere, daran denken müsste, sie auch noch in den CGI-BIN zu legen :-(

            Da liegt anscheinend dein Problem. Du willst, so wie ich es sehe, die Datei anzeigen welche mit 'http://localhost/top.txt' übers Web angesprochen werden kann.
            Da Du aber nicht im Web, sondern am Server bist, mußt Du die lokale Datei ansprechen, also
            open(TOP, "$pfad_zu_server_root/top.txt") or die "Geht schon wieder nicht, verd...";

            Merke: lokale pfade sind nicht Web-Pfade!

            $pfad_zu_server_root solltest Du unbeding variabel machen, da sie am Test-system und am Life-Server unterschiedlich sein können.
            Ich mache mir da oft einfach eine Konfig-Datei, in der ich Server-Abhängigkeiten eintrage, und lese sie halt jedesmal ein, wenn ich z.B. Pfadangaben brauche oder so.

            Wo kommst du denn her, muss ja tiefste Einschicht sein. Sowas gibts nur am Land! - Hintertupfing?

            St. Kathrein am Sessellift ;-)
            nein ist alles passiert in einer Kleinstadt in der Steiermark, wo man schnell direkt den 'Schef' erwischt :-)

            Grüße aus Graz
               Klaus

            1. Hallo Klaus,

              Daher wärs blöd, wenn ich jedesmal, wenn ich was an diesen files ändere, daran denken müsste, sie auch noch in den CGI-BIN zu legen :-(

              Da liegt anscheinend dein Problem. Du willst, so wie ich es sehe, die Datei anzeigen welche mit 'http://localhost/top.txt' übers Web angesprochen werden kann.

              Habs probiert:

              open  (TOP, "http://localhost/top.txt");
              while ($line = <TOP>) { print $line; }
              close (TOP);

              funktioniert nicht :-(
              Es ist wie verhext !

              $pfad_zu_server_root solltest Du unbeding variabel machen, da sie am Test-system und am Life-Server unterschiedlich sein können.
              Ich mache mir da oft einfach eine Konfig-Datei, in der ich Server-Abhängigkeiten eintrage, und lese sie halt jedesmal ein, wenn ich z.B. Pfadangaben brauche oder so.

              Notiert ;-)

              Wo kommst du denn her, muss ja tiefste Einschicht sein. Sowas gibts nur am Land! - Hintertupfing?

              St. Kathrein am Sessellift ;-)

              *g*

              Grüße aus Graz

              Soll auch ne schöne Stadt sein,
              Naja, vielleicht komm ich ja mal nen Sprung vorbei ;-)

              liebe Grüsse,
              Bernhard

              1. Hallo Bernhard,

                Habs probiert:
                open  (TOP, "http://localhost/top.txt");
                funktioniert nicht :-(
                Es ist wie verhext !

                Du kannst mit open keine Dateien über das HTTP-Protokoll öffnen, sondern nur Dateien, welche übers normale Filesystem erreichbar sind. Du muß unbedingt einen lokalen Dateinamen verwenden, keinen URL.

                Nehmen wir mal an, Dein Serverroot liegt in 'C:\Apache\htdocs'.
                Dort ist eine Datei, welche 'top.txt' heißt.
                Der Link darauf würde lauten 'http://localhost/top.txt'.
                Wenn Du jedoch über ein Serverscript darauf zugreifen willst, dann mußt Du
                open( TOP,'C:\Apache\htdocs\top.txt')
                verwenden, also den lokale Pfad verwenden.

                Und weil das Serverroot eben auf jedem Rechner woanders sein kann, verwende ich eine Konfigurationsdatei, in der ich das einstelle.

                Grüße
                  Klaus
                PS.: Melde Dich einfach, falls Du nach Graz kommst

                1. Hallo Klaus!

                  Heute bin ich lästig ;-)

                  Du kannst mit open keine Dateien über das HTTP-Protokoll öffnen, sondern nur Dateien, welche übers normale Filesystem erreichbar sind. Du muß unbedingt einen lokalen Dateinamen verwenden, keinen URL.

                  Geht das nicht einfacher? Falls nicht, wie komm ich beim Provider an den lokalen Serverpfad ran?

                  PS.: Melde Dich einfach, falls Du nach Graz kommst

                  Sei vorsichtig mit dem was du sagst, ich könnte dich beim Wort nehmen ;-) Aber keine Sorge, in nächster Zeit steht nichts auf dem Plan. Graz bleibt also noch eine Weile von mir verschont ;-)

                  Aber ich werd mir dein Angebot merken!

                  liebe Grüsse
                  Bernhard

                  1. Hallo Bernhard,

                    Geht das nicht einfacher? Falls nicht, wie komm ich beim Provider an den lokalen Serverpfad ran?

                    Nein, nicht wirklich. Am besten redest Du mit Deinem Provider, der kann Dir da sicherlich helfen.

                    »»

                    PS.: Melde Dich einfach, falls Du nach Graz kommst

                    Sei vorsichtig mit dem was du sagst, ich könnte dich beim Wort nehmen ;-) Aber keine Sorge, in nächster Zeit steht nichts auf dem Plan. Graz bleibt also noch eine Weile von mir verschont ;-)

                    So schlimm wirds schon nicht werden, und Graz hält schon einem Menge aus ;-)

                    Grüße
                    Klaus

                    1. Hallo Klaus,

                      Geht das nicht einfacher? Falls nicht, wie komm ich beim Provider an den lokalen Serverpfad ran?

                      Nein, nicht wirklich. Am besten redest Du mit Deinem Provider, der kann Dir da sicherlich helfen.

                      Na, wenns denn nix anderes gibt, spricht zwar gegen meine "oberste Direktive", die da heisst "keep it simple", aber was solls, was tut man nicht alles für ein lauffähiges Script ;-)

                      So schlimm wirds schon nicht werden, und Graz hält schon einem Menge aus ;-)

                      Da kennst du mich schlecht ;-)

                      liebe Grüsse,
                      Bernhard

  3. hi ho

    open  (TOP, "/top.txt");
    Nun, ja, ich kanns mir schon denken! Ich will eine Datei die im Rootverzeichnis liegt öffnen und gleich ausgeben, wie sag ich dem Server das ?

    oehm - welche root meinst du eigentlich?

    [ ] das Platten-wurzelverzeichnis

    [ ] deine web-root

    bei zweiterem musst du natuerlich den pfad dorthin mit angeben :-)

    HIH

    cua

    n.d.p.

    1. Hi!

      oehm - welche root meinst du eigentlich?

      [ ] das Platten-wurzelverzeichnis

      [x] deine web-root

      bei zweiterem musst du natuerlich den pfad dorthin mit angeben :-)

      [ ] C:\httpd\htdocs\top.txt

      [ ] http://127.0.0.1/top.txt

      zweiteres funktioniert nicht!

      schöne Grüsse
      Bernhard