test-filtreur-arbo.pl

#!/usr/bin/perl
#-----------------------------------Partie 1: Mémorisation du fichier à explorer------------------------------
print "Adresse du dossier contenant les sous dossiers à explorer ex: ./2008: \n";
my $rep=<STDIN>;
# on s'assure que le nom du répertoire ne se termine pas par un "/"
chomp($rep);
$rep=~ s/[\/]$//;
print "Numéro du fichier de travail xml, 0,2-numero,1-0,0\.xml \n par exemple tape 3260 pour livres: \n";
my $num=<STDIN>;
# on supprime le retour charriot comme dernier caractère
chomp($num);
$rubrique="";
$rubrique.="0,2-$num,1-0,0\.xml";
print "Choix:",$rubrique," Dans:",$rep;
print "\n Attendez s'il vous plait.";
open(STDOUT,">exit.txt");
#-----------------------------------Partie 2: Initialisation des flux de sortie--------------------------------
my $DUMPFULLtxt1="";
#-----------------------------------Partie 3: Parcours des sous-dossiers---------------------------------------
open (FILEOUTPUT,">$file.txt"); #ouverture d'un nouveau fichié associé à la variable FILEOUTPUT
{
&parcoursarborescencefichiers($rep); #recurse!
}
close(FILEOUTPUT);
exit;
sub parcoursarborescencefichiers
{
my $path = shift(@_);
opendir(DIR, $path) or die "can't open $path: $!\n";
my @files = readdir(DIR);
closedir(DIR);
foreach my $file (@files)
{
next if $file =~ /^\.\.?$/;
$file = $path."/".$file;
if (-d $file)
{
&parcoursarborescencefichiers($file); #recurse!
}
if (-f $file)
{
#-----------------------------------Partie 4: Ouverture des flux d'entrée et de sortie---------------------
open(FILEINPUT,"$ARGV[0]");
if ($file=~/$rubrique/)
{
open(FILEINPUT, "$file"); #ouverture d'un nouveau fichié associé à la variable FILEINPUT
open(FILEOUT1,">test-filtreur.txt"); #ouverture du flux de sortie pour le fichier test-filtreur.txt
$i=1;
print $file, "\n";
#-----------------------------------Partie 5: Filtreur
while ($ligne = <FILEINPUT>)
{
if ($ligne=~/<description>([^<]+)<\/description>/) #Recherche des lignes contenant le motif entre les slash
{
my $recup=$1; #la variable dollar recup récupère uniquement le contenu de la première parenthèse
#-----------------------------------Partie 6: Concaténation
$DUMPFULLtxt1.="$recup\n"; #récupère le texte dans la variable dollar DUMPFULLtxt1
}
}
#-----------------------------------Partie 7: Impression
print FILEOUT1 $DUMPFULLtxt1; #Imprime le fichier livres.txt
close(FILEINPUT);
close(FILEOUT1);
print $i++,"\n";
}
}
}
}
close(STDOUT);
#-----------------------------------