#/usr/bin/perl #----------------------------------------------------------- my $rep="$ARGV[0]"; # on s'assure que le nom du répertoire ne se termine pas par un "/" si ça se termine par / on remplace par rien $rep=~ s/[\/]$//; # on initialise une variable contenant le flux de sortie my $DUMPFULL1=""; my %tableaudestextes=(); # pour mémoriser ce qu'on a déjà imprimé, pour éviter les doublons #---------------------------------------- my $output1="SORTIECordial.txt"; #On met la sortie au format txt car on a besoin de .txt pour Cordial et treetagger if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"}; #---------------------------------------- &parcoursarborescencefichiers($rep); # on appelle le sous programme #---------------------------------------- print FILEOUT "$DUMPFULL1"; close(FILEOUT); exit; #---------------------------------------------- sub parcoursarborescencefichiers { # on entre dans le sous programme my $path = shift(@_); # on met dans la variable $path le contenu de la variable mise en argument opendir(DIR, $path) or die "can't open $path: $!\n"; # opendir : ouvre un rep - si on arrive pas : le pgm s'arrete et on envoie un message d'erreur my @files = readdir(DIR); # on lit le contenu du répertoire et on renvoie une liste qu'on stocke dans @files closedir(DIR); foreach my $file (@files) { # pour chaque ressource dans @files,on crèe $files next if $file =~ /^\.\.?$/; # on passe au suivant si on trouve . ou .. car on risque une boicle infinie $file = $path."/".$file; # on réécrit tout le chemin du fichier - le point permet la concaténation if (-d $file) { # on entre dans cette boucle si il y a dans $file un répertoire (-d vérifie que l'argument est un répertoire) &parcoursarborescencefichiers($file); #recurse! } if (-f $file) { # on entre dans cette boucle si il y a dans $file un fichier (-f vérifie que l'argument est un fichier) if ($file=~/0,2-3208,1-0,0.xml/){ # parcourt toute l'arborescence pour ne garder que les fichiers .xml open(FILEIN,$file); # on ouvre le fichier qu'on va lire $i=1; # compteur printf "$file\n"; # on voit si ça travaille while ($ligne = ){ # tant qu'il y a qqch à lire, on rentre dans la boucle if (($ligne!~/Retrouvez *l.*ensemble *des/) && ($ligne!~/Lisez *l.*int.*gralit.* *de *l.*article *pour *plus *d.*information./) && ($ligne!~/Toute *l.*actualit.* *au *moment *de *la *connexion/)) { if ($ligne=~/([^<]+)<\/description>/) { # si on trouve ce motif, on entre dans la boucle my $propre=$1;# on prend le motif et on le met dans $propre if ($propre=~/^(.+)<img width='1' height='1'.*$/) {$propre=$1}; #permet de supprimer les balises images contenues dans description $propre=~s/&#39;/\'/g;# nettoie $propre=~s/&#34;/\"/g;# nettoie $propre=~s/é/é/g;# nettoie $propre=~s/ê/ê/g;# nettoie $propre=~s/&eacute;/é/g;# nettoie $propre=~s/&egrave;/è/g;# nettoie $propre=~s/&icirc;/\î/g;# nettoie $propre=~s/&ocirc;/\ô/g;# nettoie $propre=~s/&ccedil;/\ç/g;# nettoie $propre=~s/&agrave;/\à/g;# nettoie $propre=~s/&/&/g;# nettoie $propre=~s/</\