#! /usr/bin/perl # Skript, das Dateien in einem zu definierenden Ordner loescht, # wenn die Datei ein zu definierendes Alter ueberschritten hat # # Hier: Loesche die mailbox Dateien aus /tmp/mail, wenn sie aelter # als 30 Tage sind use strict; use warnings; use File::Spec; ### globale Variablen ##################################################################### my $check_dir = "/tmp/mail"; my $max_age = 30; my $log_dir = '/tmp/logdir'; my $log_file = 'logfile.txt'; my $log_path = File::Spec->join( $log_dir, $log_file ); ### Sub Routinen ##################################################################### sub read_dir { my $dir = shift; return () if !defined $dir; opendir my $dh, $dir or die "$dir: $!\n"; my @entries = # Kriterien koennen sich aendern, daher in einzelnen Schritten grep { -f $_ } # nur Dateien map { File::Spec->join( $dir, $_ ) } # baue Pfad zusammen grep { !m{\A\.\.?\z} } # kein . oder .. readdir $dh; closedir $dh; return @entries; } ### Haupt Programm ##################################################################### my @to_check = read_dir( $check_dir ); open my $logh, '>>', $log_path or die "$log_path: $!\n"; for my $entry ( @to_check ) { if ( -M $entry > $max_age ) { print $logh "$entry ist aelter als $max_age Tage.\n" or die "$log_path: $!\n"; if ( unlink $entry ) { print $logh "\t$entry geloescht.\n"; } else { die "$entry: $!\n"; } } } close $logh or die "$log_path: $!\n"; __END__ ### ENDE ###