Je viens de créer un petit prog en PERL permettant de rechercher dans un fichier un paramètre entré par l'utilisateur.
Le seul problème est que dans les répertoires définis, il existe plusieurs sous répertoires. Est-ce que quelqu'un pourrait me dire quelle solution devrai-je choisir pour pouvoir parcourir tous les fichiers, surtout ceux qui sont dans les sous-dossiers.
Je vous remercie d'avance.
voici le code que j'ai fait pour vous donner un ordre d'idée du truc.
#!/usr/bin/perl
use strict;use warnings;
print "Veuillez entrer le chemin du dossier : \n";
my $path = <STDIN>;
chomp($path);
#Le chemin du fichier config.cfg est passé en paramètre par l'utilisateur
print "Veuillez entrer le message d'erreur que vous voulez rechercher : \n";
my $exp = <STDIN>;
chomp($exp);
#Parcoure le dossier.
my $dossierData = $path."/batch/outil_maaf";
opendir DIR, $dossierData or die "$dossierData n'existe pas !";
my @files = readdir DIR;
foreach my $fichier (@files) {
#Ouvre le fichier trouvé.
open F_LIRE,$fichier or die "\n######## KO ##########\nE/S : $!\n\n";
my $erreur=0;
#Lit toutes les lignes du fichier traité.
while (<F_LIRE>) {
if(m/$exp/){
#Expression trouvée par l'expression régulière
$erreur=1;
}
}
close F_LIRE;
#Si le paramètre passé par l'utilisateur a été trouvé par l'expression régulière, un message l'informe
if($erreur==1){
print "\n#######FICHIER CONTENANT UNE ERREUR######\n";
print "$dossierData/$fichier\n";
}
}
close DIR;
