#... # im code: unless( shorten_dir($dirResults, $maxRes) ) { print "\n\nERROR, Probleme beim löschen von Ordnern in $dirResults\n"; } #... # Pack die Funktionen hinten an den Code # sie brauchen nicht an der Stelle zu stehen, an denen du sie aufrufst. ################################################################################## # Funktionen ##################################################################### ################################################################################## sub shorten_dir { my $dir = shift; my $max = shift; return 0 unless( opendir(my $dh, $dir) ); my @dirs = sort{$b->[1] <=> $a->[1]} map {[$_, -M $_]} grep {-d $_} map {"$dir/$_"} readdir($dh); closedir($dh); my $ok=1; while(@dirs>$max) { $ok=0 unless( remove_dir(shift(@dirs)->[0]) ); } return $ok; } sub remove_dir { my $dirDel=shift; return 1 unless(-d $dirDel); # brauchst du nicht, # es ist schon ein vollständiger Pfad # chdir(".$dirResults"); return 0 unless( system ('rm', '-rf', $dirDel)==0 ); print "\n\nOK, Verzeichnis ".$dirDel." geloescht!\n"; return 1; }