#/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 %tableaudescontenusdesbalisesdescription=();		#	Pour verifier s'il exite des doublons. Si oui, ne pas ajouter!
my $DUMPFULL1="";
#----------------------------------------
my $output1="SORTIE-alaunecordial.xml";
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du fichier $output1"};
#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!
#----------------------------------------
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;
#----------------------------------------------
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) {
	    ############################################
	    #       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;
			if ($recup=~/^(.*)&lt;img width/)
								{$recup=$1};
						$recup=~s/&#38;#39;/\'/g;
						$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;


			#print "RECUP : <$recup> \n";

			if (($recup!~/Retrouvez l\'ensemble des dépêches sur/)
                            && ($recup!~/Toute l\'actualité au moment de la connexion/)
			    && ($recup!~/Lisez l\'intégralité de l\'article pour plus d\'information./)) {
				#	Pour verifier s\'il exite des doublons. Si oui, ne pas ajouter!
				if (exists($tableaudescontenusdesbalisesdescription{$recup})) { 
				    # Si la valeur $recup a déjà été vue, on ne fait rien que d'incrémenter
				    $tableaudescontenusdesbalisesdescription{$recup}++;
				}
				else {	
				    print $i++,"\n";
				    # Sinon on ajoute et on continue le reste de l'exécution. 
				    $tableaudescontenusdesbalisesdescription{$recup}=1;

					    $DUMPFULL1=$DUMPFULL1."$recup \n";
						$i++;
					}
				
				}
			    }
		    }
			close(FILEINPUT);
		}
	    }
	}
}	
#----------------------------------------------

