Thread Package: libtimedate-perl use File::stat; "use" not allowed in expression at (16 answers)
Opened by hcx at 2011-07-12 17:27

hcx
 2011-07-15 13:10
#150437 #150437
User since
2011-07-02
5 Artikel
BenutzerIn
[default_avatar]
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

View full thread Package: libtimedate-perl use File::stat; "use" not allowed in expression at