#!/usr/bin/perl -w # # modif_date_mbox.pl # # Catherine.Balleydier@grenoble-inp.fr # # maj : 29/04/2022 # ######################################################################## # # modification de la date d'un fichier mbox pour archiver dans sympa # ######################################################################## # use strict; use warnings; use File::Copy; my $entree = $ARGV [0]; my $REP="/home/sympa/list_data/listestest.grenoble-inp.fr/drive.pi/archives/" ; my $fichier ; my $nvfichier ; my @MAIL ; my @MAIL2 ; my @NV ; my @MESS ; my $mot = "From -" ; my $fichmail ; my $fichmail2 ; my $ind; my $message ; my $date; my $mot2; my $tamp ; my @FROMD ; # # traiter le fichier mbx # $fichier = "$REP"."$entree" ; open (FICH,"$fichier") ||die "probleme fichier"; @MAIL = <FICH> ; close (FICH); # # nouveau fichier # $nvfichier = "$fichier".".mbox" ; open (NV,">$nvfichier") ||die "probleme fichier"; # nettoyer fichier entree for $ind (0..$#MAIL) { chomp ($MAIL[$ind]) ; } # faire une seule ligne $fichmail = join ('abcdef', @MAIL); chomp ($fichmail) ; # print "$fichmail \n \n" ; # remplacer From - Tue Mar 15 par XAVAR $mot2 = "XAVAR"."$mot"; $fichmail =~ s/$mot/$mot2/g ; # séparer les messages @MAIL2 = split (/XAVAR/, $fichmail) ; # traiter chaque message my $i; for $i (1..$#MAIL2) { @MESS = split ("abcdef", $MAIL2[$i] ) ; $date = ""; # récupérer la date du type Sat, 30 Jan 2010 15:13:28 +0100 # pour avoir Sat Jan 30 15:13:28 2010 for $ind (0..$#MESS) { if ( $MESS[$ind] =~ /^Date: / ) { $tamp = $MESS[$ind] ; $tamp =~ s/Date: //; $tamp =~ s/,//; @FROMD = split (" ", $tamp ) ; if ( $FROMD[0] !~ /Mon|Tue|Wed|Thu|Fri|Sat|Sun/ ) { print "$MESS[$ind] \n "; } $date = "$FROMD[0]"." "."$FROMD[2]"." "."$FROMD[1]"." "."$FROMD[4]"." "."$FROMD[3]" ; last ; } } print NV "From - "."$date"."\n"; for $ind (0..$#MESS) { if ( $MESS[$ind] !~ /From -/ ) { $MESS[$ind] =~ s/\r// ; print NV "$MESS[$ind]"."\n" ; } } } close (NV);