1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
sub shorten_dir { my $dir=shift; my $max=shift; return 0 unless( opendir(my $dh, $dir) ); my @dirs=sort{$a->[1] <=> $b->[1]} map {[$_, -M $_]} grep {-d $_} map {"$dir/$_"} readdir($dh); closedir($dh); remove_dir(shift(@dirs)->[0]) while(@dirs>$max); return 1; } sub remove_dir { my $dir=shift; return unless(-d $dir); # Verezeichnis löschen #... }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
sub shorten_dir
{
my $dirResults = shift;
my $maxRes = shift;
return 0 unless( opendir(my $dh, $dirResults) );
my @dirs = sort{$a->[1] <=> $b->[1]} map {[$_, -M $_]} grep {-d $_} map {"$dirResults/$_"} readdir($dh);
closedir($dh);
remove_dir(shift(@dirs)->[0]) while(@dirs>$maxRes);
return 1;
}
sub remove_dir
{
my $dirDel=shift;
#print "\n".$dirDel."\n";
return unless(-d $dirDel);
chdir(".$dirResults");
system ("rm -rf ".$dirDel."");
print "\n\nOK, Verzeichnis ".$dirDel." geloescht!\n";
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
#... # 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; }