#/usr/bin/perl
<<DOC; 
Votre Nom : KUZNIK Ludivine
JANVIER 2008
 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
#-----------------------------------------------------------
##### xml.coverpage.org/xml-ISOents.txt

%rubrique = ( 
"3208" => "A la une.txt", 
"3210" => "International.txt", 
"3214" => "Europe.txt",
"3224" => "Société.txt", 
"3232" => "Opinions.txt",
"3234" => "Economie.txt", 
"3236" => "Médias.txt", 
"3238" => "Rendez-vous.txt", 
"3242" => "Sports.txt", 
"3244" => "Sciences.txt", 
"3246" => "Culture.txt", 
"3260" => "Livres.txt", 
"3404" => "Examens2008.txt", 
"3476" => "Cinéma.txt", 
"3546" => "Voyages.txt", 
"651865" => "Technologies.txt" );

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="";
#----------------------------------------



#----------------------------------------
&parcoursarborescencefichiers($rep);	#recurse!

#----------------------------------------
#if (!open (FILEOUT,">$out")) { die "Pb a l'ouverture du fichier $output"};
#print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
#print FILEOUT "<PARCOURS>\n";
#print FILEOUT "<NOM>KUZNIK</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 =~ /^\.\.?$/;
		$fich = $file;
		$file = $path."/".$file;
		if (-d $file) 
		{
			&parcoursarborescencefichiers($file);	#recurse!
		}
		if (-f $file) 
		{
			#       TRAITEMENT à réaliser sur chaque fichier
			if ( $file =~ /\.xml$/ ) 
			{
				foreach $k (keys(%rubrique)) 
				{ 
					if ( $file =~ /$k/ ) 
					{ 
						$cle=$k;
						print $file;
						print "\n";
						print $cle;
						print "\n";
					 ##################  FILTREUR #########
				    	open (FILEINPUT, $file);
						$compteurdescription=0;
						
						$DUMPFULL1= "";
						while ($ligne = <FILEINPUT>) 
						{

						if (($ligne=~/<description>(.*)<\/description>/)) 
							{
							my $texte=$1;
							if ($compteurdescription != 0) 
								{
								$texte = &nettoyage ($texte);
								$DUMPFULL1= $DUMPFULL1.$texte."\n";
								}
							$compteurdescription++;	
							}
						
						}
						close (FILEINPUT);
						print $DUMPFULL1; 		
						$doss = "resultats/BaO2C/" ;
						mkdir ($doss);
						$out = $doss.$rubrique{$cle};
						if (!open (FILEOUT,">>$out")) { die "Pb a l'ouverture du fichier $output"};		
						print FILEOUT $DUMPFULL1;
						close(FILEOUT);
									
					}
				
				
					
				}
				
								
###################
	    print $i++,"\n";
			}
		}
	}

 }

 
 
sub nettoyage {
my $tmp= shift (@_);
$tmp=~ s/&#38;#39;/'/g;
$tmp=~ s/&#38;#34;/"/g;
$tmp=~ s/&#233;/é/g;
$tmp=~ s/&#234;/ê/g;
$tmp=~ s/&#91;/[/g;
$tmp=~ s/&#93;/]/g;
$tmp=~ s/&#38;/and/g;
$tmp=~ s/Retrouvez l'ensemble des dépêches sur http:\/\/www\.lemonde\.fr//g;
$tmp=~ s/Lisez l'intégralité de l'article pour plus d'information\.//g;
return $tmp;
}