Levent: anfänger script.. dateihandling

hi,

mein script läuft glaube ich nicht

#!/usr/bin/perl

my $file = "test.pl";
my $modify = stat($file[9]);
my $mod_stunden = int($modify / 3600);

if ($mod_stunden > 1){
 print "\nVORSICHT!! Die Datei wurde zuletzt vor ".$mod_stunden." bearbeitet\n";
}else{
 print "\nALLES OK!! Die Datei wurde zuletzt vor ".$mod_stunden." Stunden bearbeitet\n";
}

wenn ich

print stat($file[9]);

mache, bekomme ich die Sekunden.. wenn ich es in eine Variable schreibe, kommt einfach nur eine "1" raus ??

und somit ist die umrechnung in stunden immer = 0

das perl script auf selfhtml läuft bei mir auch nicht :(
http://selfhtml.teamone.de/cgiperl/funktionen/dateiverwaltung.htm#stat

  1. Hi,

    #!/usr/bin/perl

    #!/usr/bin/perl -w
    use strict;

    my $file = "test.pl";
    my $modify = stat($file[9]);

    $file besitzt keine 10 Zeichen, also ist $file[9] auch undefiniert.

    wenn ich
    print stat($file[9]);
    mache, bekomme ich die Sekunden..

    Ungewöhnlich. Es sollte eigentlich einen Fehler geben, oder zumindest eine Warnung. Nun ja, Du hast warnings ja auch nicht eingeschaltet gehabt.

    das perl script auf selfhtml läuft bei mir auch nicht :(

    "Läuft nicht" läuft nicht. Fehlerbeschreibung, bitte.

    http://selfhtml.teamone.de/cgiperl/funktionen/dateiverwaltung.htm#stat

    </faq/#Q-19>

    Cheatah

    --
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
    1. my $file = "test.pl";
      my $modify = stat($file[9]);

      $file besitzt keine 10 Zeichen, also ist $file[9] auch undefiniert.

      9 steht für die letzte modifikation der datei.. was hat das mit zeichen zu tun?

      das perl script auf selfhtml läuft bei mir auch nicht :(

      "Läuft nicht" läuft nicht. Fehlerbeschreibung, bitte.

      die felder der variablen bleiben lehr...

      1. Hi,

        my $modify = stat($file[9]);
        $file besitzt keine 10 Zeichen, also ist $file[9] auch undefiniert.
        9 steht für die letzte modifikation der datei..

        nein, tut es nicht, weil die Variable $file keinerlei derartige Information beinhaltet.

        was hat das mit zeichen zu tun?

        Du behandelst eine skalare Variable - nämlich $file - wie ein Array. Dadurch wird implizit ein Array erzeugt (bzw. angenommen), welches aus den einzelnen Zeichen des Skalars besteht. An dieser Stelle hast Du *keine* Information über irgendeine Datei vorliegen.

        das perl script auf selfhtml läuft bei mir auch nicht :(
        "Läuft nicht" läuft nicht. Fehlerbeschreibung, bitte.
        die felder der variablen bleiben lehr...

        Auch das ist noch keine Fehlerbeschreibung. Die Ergebnisse Deiner Detektivarbeit, also z.B. intelligent gewählte Debug-Ausgaben, sind grundsätzlich unverzichtbar.

        Cheatah

        --
        X-Will-Answer-Email: No
        X-Please-Search-Archive-First: Absolutely Yes
        1. my $modify = stat($file[9]);

          Du behandelst eine skalare Variable - nämlich $file - wie ein Array. Dadurch wird implizit ein Array erzeugt (bzw. angenommen), welches aus den einzelnen Zeichen des Skalars besteht. An dieser Stelle hast Du *keine* Information über irgendeine Datei vorliegen.

          also schon cool wie du das beschreibst.. aber wenn euer gnaden doch netter weise einen lösungsvorschlag anbieten würde, sehe ich mehr Sinn in Ihrer Aussage..

          der Perlanfänger

          1. Hi,

            also schon cool wie du das beschreibst..

            danke. Mein Ziel ist, dass Du selber darauf kommst, was Du falsch machst und _warum_ es falsch ist.

            aber wenn euer gnaden doch netter weise einen lösungsvorschlag anbieten würde, sehe ich mehr Sinn in Ihrer Aussage..

            Wenn Du o.g. verstehst, wirst Du Dir vor die Stirn klatschen, ein Zeichen verschieben und glücklich sein.

            Cheatah

            --
            X-Will-Answer-Email: No
            X-Please-Search-Archive-First: Absolutely Yes
            1. ok
              ok

              und was heisst es wenn da steht, requires explicit package name? :))

              ich mache PERL nun zum zweiten mal .. also danke für euer Verständnis..

              viele grüsse

              1. Hi,

                und was heisst es wenn da steht, requires explicit package name? :))

                an welcher Stelle (also in welchem Kontext) steht das?

                Cheatah

                --
                X-Will-Answer-Email: No
                X-Please-Search-Archive-First: Absolutely Yes
          2. use Mosche;

            Um das ganze mal abzukürzen...

            my $modify = stat($file[9]);

            my $modifiy = (stat($file))[9]; ist wahrscheinlich eher, was du willst.

            Probier aber zu verstehen, was Cheatah dir sagen will.

            use Tschoe qw(Matti);

            --
              Anyone who quotes me in their sig is an idiot. -- Rusty Russell.
  2. mein script läuft glaube ich nicht

    Wenn du direkt Cheatahs ersten Tipp eingebaut hättest:

    #!/usr/bin/perl

    #!/usr/bin/perl -w

    Damit schaltest du Warnungen an, die für das Debuggen sehr sinnvoll sind.

    use strict;

    Danach müssen alle Variabeln mit my deklariert werden, damit verhinderst du Tippfehler.

    my $file = "test.pl";
    my $modify = stat($file[9]);
    my $mod_stunden = int($modify / 3600);

    if ($mod_stunden > 1){
     print "\nVORSICHT!! Die Datei wurde zuletzt vor ".$mod_stunden." bearbeitet\n";
    }else{
     print "\nALLES OK!! Die Datei wurde zuletzt vor ".$mod_stunden." Stunden bearbeitet\n";
    }

    Jetzt erhälst du folgende Fehlermeldung:
    Global symbol "@file" requires explicit package name at test.pl line 7.
    Execution of test.pl aborted due to compilation errors.

    Es ist nämlich nicht so wie Cheatah schreibt, das aus dem String (Skalar) ein Array wird. $var[...] ist etwas komplett anderes wie $var

    Du hast also einen Tippfehler drin. lies dir nochmal die Erklärung zu stat durch.

    Struppi.