Thread Package: libtimedate-perl use File::stat; "use" not allowed in expression at
(16 answers)
Opened by hcx at 2011-07-12 17:27
Hi, ich hab mir Dein Skript nochmal genauer angesehen und hätte noch ein paar Anmerkungen:
Hier mal (m)eine Überarbeitung Deines Skriptes: Code (perl): (dl
)
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 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 #! /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 ### Last edited: 2011-07-12 20:48:09 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |