Verzeichnis erkennen
Florian
- perl
0 Klaus Mock0 Florian
Hallo
Ich mein Problem wäre folgendes, ich möchte meine Verzeichnisse durchstöbern und Verzeichnisse und Dateien trennen
Nachdem ich verschiedene möglichkeiten durchprobiert habe bin ich fast am verzweifeln. Das Ding macht einfach nicht das was es soll und ich brauche Hilfe.
der Einfachkeit halber habe ich den Code auf das notwendigste reduziert.
--CODE--
my $Verzeichnis = "/home/user/daten/";
opendir(DIR, $Verzeichnis) || die "$Verzeichnis: $!";
my @Eintraege = readdir(DIR);
closedir(DIR);
foreach(@Eintraege) {
print " ",-d $_ ? "DIR " : "FILE ","$_\n";
}
--/CODE--
das liefert die Ausgabe:
--OUTPUT--
DIR .
DIR ..
FILE physik
FILE index.html
FILE index.htm
FILE allg
FILE test
FILE test.shtml
--/OUTPUT--
Jetzt sind aber physik, allg, und test auch Verzeichnisse. Wieso sind diese nicht als solche erkennbar? Wo liegt mein Denkfehler? Was mache ich falsch?
Vielen Dank für die Hilfe
Flo
Hallo,
Jetzt sind aber physik, allg, und test auch Verzeichnisse. Wieso sind diese nicht als solche erkennbar? Wo liegt mein Denkfehler? Was mache ich falsch?
Naja, manchmal sieht man einfahc nicht das Offensichtliche, oder?
readdir() liefert nur die Dateinamen der Dateien in ein Verzeichnisses. Pfadangaben sind natürlich nicht dabei. Und -d will aber schon wissen _wo_die Datei liegt, und nicht nur, wie ihr Name in einem bestimmten Verzeichnis lautet. Sprich, Du mußt schon auch den Dateinamen inklusive Pfad angeben.
Grüße
Klaus
Hallo Klaus
Jetzt sind aber physik, allg, und test auch Verzeichnisse. Wieso sind diese nicht als solche erkennbar? Wo liegt mein Denkfehler? Was mache ich falsch?
Naja, manchmal sieht man einfahc nicht das Offensichtliche, oder?
readdir() liefert nur die Dateinamen der Dateien in ein Verzeichnisses. Pfadangaben sind natürlich nicht dabei. Und -d will aber schon wissen _wo_die Datei liegt, und nicht nur, wie ihr Name in einem bestimmten Verzeichnis lautet. Sprich, Du mußt schon auch den Dateinamen inklusive Pfad angeben.
ich hab einfach diese Zeile geändert und es funktioniert. Danke
print " ",-d $Verzeichnis.$_ ? "DIR " : "FILE ","$_\n";
Gruß Flo