Thread Das aktuelle Verzeichnis ermitteln (13 answers)
Opened by PETER_PAN2009 at 2009-10-07 11:52

betterworld
 2009-10-07 14:47
#126576 #126576
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
2009-10-07T12:21:16 PETER_PAN2009
Ich bekomme zwei Werte (10 stellig) und dann die Fehlermeldung Can't call method "mtime" on an undefined value

OK, ich hätte noch die nötige Fehlerbehandlung dazutun sollen:
Code (perl): (dl )
1
2
3
use File::stat;
my $stat = stat($file) or die "Could not stat $file: $!\n";
print $stat->mtime;


Nun wirst Du vermutlich eine aussagekräftige Fehlermeldung bekommen wie "No such file or directory". Den Grund dafür hat ja topeg genannt.

Das Modul CPAN:Path::Class erleichtert die ganze Geschichte übrigens noch weiter:
Code (perl): (dl )
1
2
3
4
5
6
7
8
use Path::Class;

my $dir = dir("D:/qt"); # dir() kommt aus Path::Class

for my $entry ($dir->children) {
    my $stat = $entry->stat or warn("$entry: $!\n"), next;
    print $stat->mtime;
}


Wenn stat() so aufgerufen wird, muss File::stat übrigens nicht selbst eingebunden werden, das wird von Path::Class gemacht.

Der Vorteil hierbei ist u.a., dass die Pfade, die "children" zurückgibt, nicht relativ zu $dir sind, sondern $dir wird automatisch davor angehängt. Das spart mühsame Routinearbeit.

Allerdings wird Path::Class nicht mit perl ausgeliefert, man muss es selbst installieren.

Edit: CPAN-Link gesetzt
Edit: children statt next benutzt
Last edited: 2009-10-07 15:52:44 +0200 (CEST)

View full thread Das aktuelle Verzeichnis ermitteln