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/&#39;/\'/g; $recup=~s/&#34;/\"/g; $recup=~s/é/é/g; $recup=~s/é/é/g; $recup=~s/ê/ê/g; $recup=~s/é/é/g; $recup=~s/è/è/g; $recup=~s/ë/ë/g; $recup=~s/ê/ê/g; $recup=~s/à/à/g; $recup=~s/â/â/g; $recup=~s/ç/ç/g; $recup=~s/ï/ï/g; $recup=~s/î/î/g; $recup=~s/ù/ù/g; $recup=~s/ü/ü/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"; } } } } #----------------------------------------------