bao1-foutoun.pl

#/usr/bin/perl
<<DOC;
Votre Nom : CHAAR FOUTOUN
JANVIER 2009
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
#-----------------------------------------------------------
# la création de tableau
# un groupe de valeur indéxe par des chaînes de caractères
%rubrique = (
"3208" => "A la une.xml",
"3236" => "Médias.xml",
"3242" => "Sports.xml",
"651865" => "Technologies.xml",
"3260" => "Livres.xml",
"3244" => "Sciences.xml",
"3546" => "Voyages.xml",
"3476" => "Cinéma.xml",
"3210" => "International.xml",
"3214" => "Europe.xml",
"3224" => "Société.xml",
"3232" => "Opinions.xml",
"3246" => "Culture.xml" ) ;

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="";
#----------------------------------------
my $output1="SORTIE-rubriques.xml";
open (FILEOUTPUT);
if (open (FILEOUTPUT,">$output1")) {
#----------------------------------------
# on lance le parcours d'arborescence.
my $i=1;
&parcoursarborescencefichiers($rep); #recurse!
#----------------------------------------
print FILEOUTPUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print FILEOUTPUT "<PARCOURS>\n";
print FILEOUTPUT "<NOM>CHAAR FOUTOUN</NOM>\n";
print FILEOUTPUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUTPUT "</PARCOURS>\n";
}
else { die "Pb a l'ouverture du fichier $output1"};
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)
{
# TRAITEMENT à réaliser sur chaque fichier
# Insérer ici votre code (le filtreur)
open(FILEINPUT,"$ARGV[0]");

if (($file=~/0,2-3208,1-0,0\.xml/) || ($file=~/0,2-3236,1-0,0\.xml/) || ($file=~/0,2-3242,1-0,0\.xml/) || ($file=~/0,2-65185,1-0,0\.xml/) || ($file=~/0,2-3260,1-0,0\.xml/) || ($file=~/0,2-3244,1-0,0\.xml/) || ($file=~/0,2-3546,1-0,0\.xml/) || ($file=~/0,2-3476,1-0,0\.xml/) || ($file=~/0,2-3210,1-0,0\.xml/) || ($file=~/0,2-3214,1-0,0\.xml/) || ($file=~/0,2-3224,1-0,0\.xml/) || ($file=~/0,2-3232,1-0,0\.xml/) || ($file=~/0,2-3246,1-0,0\.xml/))
{
open(FILEINPUT, "$file");
open(FILEOUT,">rubriques.txt");
$i=1;
print $file, "\n";
while ($ligne = <FILEINPUT>)
{
if ($ligne=~/<description>([^<]+)<\/description>/)
{
my $recup=$1; #la variable $1 est remplacée par recup $recup=~s/&#38;#39;/\'/g;
$recup=~s/&#38;#34;/\"/g;
$recup=~s/&#233;/é/g;
$recup=~s/é/é/g;
$recup=~s/&#234;/ê/g;
$recup=~s/&eacute;/é/g;
$recup=~s/&egrave;/è/g;
$recup=~s/&euml;/ë/g;
$recup=~s/&ecirc;/ê/g;
$recup=~s/&agrave;/à/g;
$recup=~s/&acirc;/â/g;
$recup=~s/&ccedil;/ç/g;
$recup=~s/&iuml;/ï/g;
$recup=~s/&icirc;/î/g;
$recup=~s/&ugrave;/ù/g;
$recup=~s/&uuml;/ü/g;
$recup=~s/Retrouvez l'ensemble des dépêches sur http:\/\/www\.lemonde\.fr/ /g;
$recup=~s/Toute l'actualité au moment de la connexion/ /g;
$recup=~s/Toute l'actualité au moment de la connexion/ /g;
$recup=~s/Lisez l'intégralité de l'article pour plus d'information./ /g;
$recup=~s/Lisez l'intégralité de l'article pour plus d'information. / /g;
$recup=~s/<((\w)*(\W*))*>/ /g; # enlève toutes les balises
$DUMPFULLtxt1.="$recup \n"; # insère un saut de ligne sur le fichier texte
$DUMPFULLtxt1=~s/ ( )?\n ( )?\n//g; # supprime les sauts de ligne répétés
$DUMPFULL1.="<extract num=\"$i\">$recup</extract> \n"; #met le résultat entre des balises extract
$DUMPFULL1=~s/ \n \n//g; # supprime les sauts de ligne répétés
$DUMPFULL1=~s/<extract num=\"$i\"> ( )?<\/extract>//g;
$DUMPFULL1=~s/extract><extract/extract>\n<extract/g;
$i++;
}
}
print FILEOUT $DUMPFULLtxt1;
close(FILEINPUT);
close(FILEOUT);
print $i++,"\n";
}
}
}
}
#----------------------------------------------