Tu as codé comme un cochon
1 2
|
push( @fichiers, $SYSLOG_DIR . "/$nom\n" ); |
au lieu de
push( @fichiers, $SYSLOG_DIR . "/$nom" );
Un retour à la ligne qui n'a pas sa place, du coup, le module est incapable de lire le fichier.
Pour t'en persuader :
1 2
| print "==>$LesFichiers[$i]<==\n";
print "==>$SYSLOG_DIR"."/compress.log.gz<==\n" ; |
Voilà :
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
| #!/usr/bin/perl
use DBI;
use strict;
use warnings;
my $LECTEUR = "C:\\"; # lecteur d'installation
my $SYSLOG_DIR = "$LECTEUR" . "Source"; # répertoire d'installation du fichier syslog à analyser
print "Ouverture du repertoire $SYSLOG_DIR\n";
opendir( SYSLOGDIR, $SYSLOG_DIR ) or die "Impossible d'ouvrir $SYSLOG_DIR";
# ------------------------------------------------------------------------------------------------
# Fonction lister les fichiers contenus dans $SYSLOG_DIR
# le nom des fichiers est dans une table : @LesFichiers
# ------------------------------------------------------------------------------------------------
my @LesFichiers = ListersFichiers($SYSLOG_DIR);
my $NbrFichiers = @LesFichiers;
print " Il y a $NbrFichiers fichiers log dans le repertoire\n";
print "les fichiers a traiter sont :\n";
foreach ( @LesFichiers ) {
print "- $_\n";
}
#------------------------------------------------------------------------------
# décompresser fichiers, copie dans C:/temp
#------------------------------------------------------------------------------
use Archive::Extract;
my $DEST = "$LECTEUR" . "/temp";
ExtraireFichier();
sub ExtraireFichier {
# je vérifie que les 2 adresses sont les mêmes pour i=0
my $i = 0;
$LesFichiers[$i] =~ s{\\}{/}g;
print "ExtraireFichier : '",$LesFichiers[$i],"'\n";
my $ae = Archive::Extract ->new( archive => $LesFichiers[$i]);
my $ok = $ae->extract( to => "$DEST" ) or die $ae->error;
my $files_ref = $ae->files;
# Afficher les fichiers
foreach my $fichier ( @{$files_ref} ) {
print "- $fichier\n";
}
}
sub ListersFichiers {
my ($SYSLOG_DIR) = @_;
my @fichiers;
# Liste fichiers et répertoire sauf (. et ..)
my @Contenu = grep { !/^\.\.?$/ } readdir(SYSLOGDIR);
# Fermeture du répertoire
closedir(SYSLOGDIR);
# On récupère tous les fichiers
foreach my $nom (@Contenu) {
push( @fichiers, $SYSLOG_DIR . "/$nom" );
}
return @fichiers;
} |
Partager