Datei im root-Verzeichnis einlesen
    
Bernhard Peissl
    
    
      
    
  - perl
 
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
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
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 malopen (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
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
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
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
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
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.
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
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
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
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
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
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
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
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.
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