Markus: Verzeichnisse "aufspüren"

Hossa!

Gibt es eine Funktion, um in einem Verzeichniss nach anderen Unterverzeichnissen suchen, und diese dann mit Pfadangabe protokollieren zu lassen?

Ich habe mir schon etwas geschrieben, aber ich habe noch ein Problem damit. Das Problem ist, das ich nicht weiß wie ich das Programm so variabel machen kann, dass es absolut "sch**ß" egal ist wie viele Unterordner existieren...

Hier mein Quellcode:
*Er Funktioniert nur im "obersten Pfad"*

sub verzeichnis #Testet ob Unterverzeichnisse vorhanden
{
$suchpfad=shift;
$suchpfad2=shift;
my @folder;
opendir(DIR, $suchpfad) || die;
my @Eintraege = readdir(DIR);
closedir(DIR);
chdir($suchpfad);
foreach(@Eintraege) #Für alle Verzeichniseintraege, tue...
   {
     if (-d $_) #pruefen ob es ein Verzeichnis ist
     {
      if ($_ =~ /^.$/i or $_ =~ /^..$/) #ob es der Punkt oder "PunktPunkt" ist
          {
         print ("NULL\n"); #Wenn "ja" -> Verwerfen
             }
             else
        {
  push(@folder, "c:\$suchpfad2\$_"); #Pfad der Verzeichnisse in ein Array speichern
        }
      }
     }#HIER IST DER TEIL WO ICH NICHT WEITER WEISS...
foreach(@folder) #Für alle oben ermittelten Verzeichnisse
  {
   verzeichnis($_); #Teste ob Unterverzeichnisse vorhanden
  }
}

#Verzeichnis in dem gesucht werden soll
my $root ="/";
my $verzeichnis = "test";
my $kompletterpfad = "$root$verzeichnis";

system("cd \");

verzeichnis($kompletterpfad, $verzeichnis);

  1. Gibt es eine Funktion, um in einem Verzeichniss nach anderen Unterverzeichnissen suchen, und diese dann mit Pfadangabe protokollieren zu lassen?

    use File::Find in Verbindung mit -d kannst du alle Verzeichnisse und Unterordner finden.

    Struppi.

    1. das ist ja super das es eine fertige funktion zum suchen gibt!

      aber ich raff irgendwie die syntax von File::Find nicht.

      außerdem bin ich nicht sicher ob diese module zur verfügung stehen, denn ich nutze atm activeperl unter winxp, aber dieses prog soll dann unter dos laufen und ich weiß nicht woher ich ein DOS-perl interpreter herbekomme...

      1. das ist ja super das es eine fertige funktion zum suchen gibt!

        aber ich raff irgendwie die syntax von File::Find nicht.

        Steht in der Doku.

        use File::Find;
        find(&wanted, '/foo');

        sub wanted {
        print $File::Find::name . "\n";
        }

        außerdem bin ich nicht sicher ob diese module zur verfügung stehen, denn ich nutze atm activeperl unter winxp, aber dieses prog soll dann unter dos laufen und ich weiß nicht woher ich ein DOS-perl interpreter herbekomme...

        Das Modul ist dabei.
        Und eigentlich solte Perl in der DOS Box laufen, einfach mal z.b. perl -v eingeben

        Struppi.

      2. Hallo,

        ... und ich weiß nicht woher ich ein DOS-perl interpreter herbekomme...

        http://www.cpan.org/ports/#msdos

        Grüße
          Klaus