anfänger script.. dateihandling
Levent
- perl
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
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
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...
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
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
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
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
Hi,
und was heisst es wenn da steht, requires explicit package name? :))
an welcher Stelle (also in welchem Kontext) steht das?
Cheatah
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);
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.