Ludwig Ruderstaller: Warum keinen Zugriff?

Hallo,

Das hier funktioniert:

open(TEST, ">log1.txt");
print TEST "10\n";
close <TEST>;

es schreibt im momentanen verzeichniss eine datei mit namen log1.txt und inhalt 10, klar so solls auch sein, aber warum geht das dann nicht?

open(log, "<log1.txt");
$log = <log>;
close <log>;

Er meldet Fehler in Zeille2 (das ist die open(log, "<log1.txt"); zeile): Can't take log off 0 at countme.pl line 2

chmod ist auf 777, inhaber bin ich (user jobforum group jobforum)

das ganze ist in einem unterverzeichniss von CGI-BIN mit chmod 777, funktioniert aber auch nicht im cgi-bin root.

Hat jemand eine Idee wo ich was falsch gemacht habe, bzw wo der Fehler am Server liegen könnte?

Ciao
Ludwig

  1. open(log, "<log1.txt");
    $log = <log>;
    close <log>;

    *grmbl* muß einem ja auch gesagt werden dsa LOG groß gehört :-)

    Ciao
    Ludwig

    1. open(log, "<log1.txt");
      $log = <log>;
      close <log>;
      *grmbl* muß einem ja auch gesagt werden dsa LOG groß gehört :-)

      Soweit ich weiß, können die File-Handler prinzipiell schon klein geschrieben werden (nie probiert...), wahrscheinlich ist "log" aber schon irgendwie von Perl belegt.

      Ciao,
      Mirko

    2. Hi

      open(log, "<log1.txt");
      $log = <log>;
      close <log>;
      *grmbl* muß einem ja auch gesagt werden dsa LOG groß gehört :-)

      *g*  close <log> kommt mir aber ueberhaupt komisch vor. Ich habe die spitzen Klammern jedenfalls noch nie benutzt. Das wuerde doch eigentlich nochmal versuchen, etwas aus der Datei zu lesen, oder?

      Calocybe

    3. Hallo Ludwig

      close <log>;

      Ich denke, das sollte besser:
      close log;
      oder
      close(log);
      heissen.

      Wundert mich, warum der Perl-Interpreter da nicht meckert. Hast du, wenn es als CGI gelaufen ist, mal das CGI-Error-File des Servers angeguckt?

      viele Gruesse
        Stefan Muenz

      1. Hi,

        close <log>;

        Ich denke, das sollte besser:
        close log;
        oder
        close(log);
        heissen.

        nebenbei bemerkt: Schon in perldoc perldata steht folgender Satz:
        "You can't have a filehandle named ``log'', for instance."
        Sollte einem zu denken geben :-)

        Übrigens ist die Schlußfolgerung in dem Absatz, daß man besser Filehandles in Großbuchstaben verwenden sollte, um auch später nicht in Konflikte zu geraten.

        Wundert mich, warum der Perl-Interpreter da nicht meckert.

        In der Tat...

        Cheatah

      2. Hallo Stefan

        close <log>;

        Ich denke, das sollte besser:
        close log;
        oder
        close(log);
        heissen.

        Wundert mich, warum der Perl-Interpreter da nicht meckert. Hast du, wenn es als CGI gelaufen ist, mal das CGI-Error-File des Servers angeguckt?

        Perl meckert nicht, das skript läuft und ich fass es nciht mehr an :-)

        wegen <> & (), hab das mal so in einem Perl buch gesehen, kann jetzt ncith nachsehen weil ich es verliehen habe, werd ich aber nachhohlen :-)

        Ciao und Danke
        Ludwig