Florian: Verzeichnis erkennen

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

  1. 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

    1. 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