use File::Find; my @dirs = @_ or die "No dir for search\n"; find(\&findthem, @dirs); sub findthem { # falls Dateiname nicht CostFunction_sum oder task.dat am Ende if ( $File::Find::name !~ /(CostFunction_sum|\Qtask.dat\E)$/ ) { # Datei löschen unlink $File::Find::name if -f $File::Find::name; # Verzeichnis löschen wenn nicht . oder .. rmdir $File::Find::name if -d $File::Find::name and $File::Find::name !~ /^\.\.?$/; } }