#/usr/bin/perl
<<DOC; 
Votre Nom : 
JANVIER 2005
 usage : perl parcours-arborescence-fichiers repertoire-a-parcourir
 Le programme prend en entrée le nom du répertoire contenant les fichiers
 ŕ traiter
 Le programme construit en sortie un fichier structuré contenant sur chaque
 ligne le nom du fichier et le résultat du filtrage :
<FICHIER><NOM>du fichier</NOM></FICHIER><CONTENU>du filtrage</CONTENU></FICHIER>
DOC
#-----------------------------------------------------------
my $rep="$ARGV[0]";
# on s'assure que le nom du répertoire ne se termine pas par un "/"
$rep=~ s/[\/]$//;
# on initialise une variable contenant le flux de sortie 
my $DUMPFULL1="";
#------------------------------
# on ouvre le fichier de sortie
my $output1="SORTIE.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
# on lance le parcours rŽcursif de l'arbre des fils
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
# on formate la sortie: fichier XML avec entete et 
# on intŹgre le contenu de la variable contenant le filtrage
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Votre nom</NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
exit;
#-----------------------------------
# La procŽdure de parcours
sub parcoursarborescencefichiers {
    my $path = shift(@_);
    opendir(DIR, $path) or die "can't open $path: $!\n";   # on ouvre le rŽpertoire
    my @files = readdir(DIR);                # on rŽcupŹre le contenu du rŽpertoire
    closedir(DIR);
    foreach my $file (@files) {             # pour chacun des ŽlŽments contenus dans le rŽpertoire, on va vŽrifier son statut (rŽpertoire ou fichier)
	next if $file =~ /^\.\.?$/;             
	$file = $path."/".$file;                # on commence par Žcrire
	if (-d $file)                           # le chemin complet de m'ŽlŽment
	{
	    &parcoursarborescencefichiers($file);	# si ŽlŽment est un rŽpertoire, on relance le parcours!
	}
	if (-f $file)
	{
        ############################################
	    #       TRAITEMENT ŕ réaliser sur chaque fichier
	    #       Insérer ici votre code (le filtreur)
	    ############################################	

	if ($file=~/0,2-3208,1-0,0\.xml/)
	{
		open(FILEINPUT, "$file");
		$i=1;
		print $file, "\n";
		while ($ligne = <FILEINPUT>)		#	Tant qu'il y a de ligne dans le fichier.
		{
			if ($ligne=~/<description>([^<]+)<\/description>/)
				#		Commentaires
			    #		=~	rechercher
		        #		/	/	dans
		        #		\/	despécialiser / 
		        #		[^<] 	tout prendre sauf < (utilisation de l'opérateur négation: ^)
		        #		
			{
				my $recup=$1;
				$recup=~s/&#38;#39;/\'/g;		#	=~s	rechercher et remplacer par... remplacer dans le fichier recup &#38;#39 par '  et g veut dire "remplacer tout"			
				$recup=~s/&#38;#34;/\"/g;
				$recup=~s/&#233;/é/g;
				$recup=~s/&#234;/ę/g;
				$recup=~s/&amp;eacute;/é/g;
				$recup=~s/Ă©/é/g;
				$recup=~s/&gt;/>/g;
				$recup=~s/&lt;/</g;
				$recup=~s/&amp;/&/g;
				$recup=~s/Ă/ŕ/g;
				$recup=~s/ĂŞ/ę/g;
				$recup=~s/ŕŞ/ę/g;
				$recup=~s/ŕ¨/č/g;
				$recup=~s/§/ç/g;
				$recup=~s/ŕ§/ç/g;
				$recup=~s/&ecirc;/ę/g;
				$recup=~s/&egrave;/č/g;
				if ($recup!~/Retrouvez l'ensemble des dépęches sur http:\/\/www.lemonde.fr/){   # si l'ŽlŽment est un fichier, on lance le traitement de filtrage avec impression de la variable $DUMPFULL1
				$DUMPFULL1=$DUMPFULL1."$recup \n";           
				$i++;
				}
			}
		}
	}
	close(FILEINPUT);

#####################################################
	
	
#       TRAITEMENT ŕ réaliser sur chaque fichier
#       Insérer ici votre code (le filtreur)
	    print $i++,"\n";
	}
    }
}
#----------------------------------------------
