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); #-----------------------------------