use strict; use warnings; use File::Find; no warnings 'File::Find'; my %dirs = (); my $startdir = '.'; sub filter_for_rrd {  # filtere aus dem Verzeichnis alle rrd dateien heraus  my @files = grep /\.rrd$/, @_;  # filtere alle Unterverzeichnisse heraus  my @dirs = grep -d, @_;  # falls rrd Dateien vorhanden waren, speichere das Verzeichnis  # samt der Liste der Dateien in %dirs  $dirs{$File::Find::dir} = \@files if (@files);  # gib für File::Find die Liste der Verzeichnisse und der rrd Dateien  # zurück  return @dirs, @files; } sub process_rrd {  if (-f $_) {    # bearbeite einzelne rrd Datei hier, oder lasse die ganze    # process_rrd Subroutine einfach leer.  } } find({      preprocess => \&filter_for_rrd,      wanted => \&process_rrd },     $startdir); # %dirs enthält jetzt einen Hash, dessen keys die Pfade zu allen # Verzeichnissen mit rrd Dateien sind und dessen values jeweils # Referenzen auf Arrays mit den rrd Dateien sind. use Data::Dumper; print Dumper \%dirs;