Thread Package: libtimedate-perl use File::stat; "use" not allowed in expression at
(16 answers)
Opened by hcx at 2011-07-12 17:27
Hallo Perlmonks,
habe mein Skript nochmal überarbeitet. 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 #!/usr/bin/perl use warnings; use strict; ############################################################################################################################################ # Skript loescht alle Systemmails die älter als 30 Tage sind durch Vergleich der Zeitstempel## # ############################################################################################ use File::stat; use Time::localtime; use Date::Parse; ########################################################################################################################################## ############################################################################################################################################# my $path ="/var/mail/"; my $mail ="/var/mail/root"; my $log ="/home/uli/logs"; my $logfile =">$log/maillog.txt"; ############################################################################################################################################ my $mail_date_string = ctime(stat($mail)->mtime); # das aktuelle Datum my $time_now = localtime; my $time_file_in_seconds = str2time($mail_date_string); my $time_now_in_seconds = str2time($time_now); my $max_age = 2592000; # 30 Tage in Sekunden ######################################################################################################################################### opendir(DIR,$path) or die "ERROR: Cannot open directory: '$path': $!\n"; my @remove = readdir(DIR); close(DIR); ######################################################################################################################################### open(LOGFILE, $logfile) or die "Cannot open LOGFILE:$logfile $!\n"; ########################################################################################################################################## print "\t ### START FUNCTION CLEAN NOW! ### \n"; &CLEAN($path); print "#\n#\n# WRITE TO LOGFILE $logfile !\n#\n#\n"; open(LOGFILE, ">$logfile") or die "Cannot open LOGFILE:$logfile $!\n"; close LOGFILE; ################################################################################################################################ ########################################################################################################################################### sub CLEAN { my $diff = -M $mail; foreach my $entry (@remove) { if($diff > $max_age) { print LOGFILE "\t mail older than 30 days found \n"; } # END if elsif(unlink $entry) { print LOGFILE "\t delete mail $entry \n"; } # END elsif else { print LOGFILE "\t no mails older than 30 days found \n"; } # END else } # END Foreach } # END sub freue mich schon auf euere konstruktive Kritik. Kann es im Moment nicht testen habe keine Mails älter 30 Tage. Gruss hcx |