#/usr/bin/perl <<DOC; Egle Ramdani FEVRIER 2006 Usage : perl parcours-arborescence-fichiers répertoire-à-parcourir Le programme prend en entrée le nom du répertoire contenant les fichiers à traiter et produit en sortie un corpus pour l'étiquetage avec Cordial. DOC # récupération du nom du répertoire ----------------------------------------------------------- my $rep="$ARGV[0]"; # on s'assure que le nom du répertoire ne se termine pas par un "/" $rep=~ s/[\/]$//; # création du fichier de sortie --------------------------------------------------------------- my $output="filtrage_pour_cordial.txt"; if (!open (FILEOUT,">$output")) { die "Pb a l'ouverture du fichier $output"}; # lancement de la procédure qui parcours l'arborescence --------------------------------------- &parcoursarborescencefichiers($rep); # fermeture du fichier de sortie -------------------------------------------------------------- close(FILEOUT); exit; # parcours de l'arborescence en recherche des fichiers ---------------------------------------- sub parcoursarborescencefichiers { my $path = shift(@_); opendir(DIR, $path) or die "Impossible d'ouvrir $path: $!\n"; my @items = readdir(DIR); closedir(DIR); foreach my $item (@items) { next if $item =~ /^\.\.?$/; $item = $path."/".$item; if (-d $item) { &parcoursarborescencefichiers($item); #récursion } if (-f $item) { &traitementtypo($item); print $i++,"\n"; } } } #---------------------------------------------- sub traitementtypo{ my $fichier = shift; open(FILEINPUT,$fichier); while ($ligne = <FILEINPUT>){ if ($ligne =~/<description>([^<]+)<\/description>/) { $des = $1; $des=~s/http\S+//g; #on enlève les liens html $des=~s/([^\.]$)/\1./g; #on s'assure que chaque ligne se termine par un point $des=~s/\.([A-Z])/. \1/g; #on s'assure qu'il y a un espace entre les phrases $des=~s/\s\././g; #on s'assure qu'il n'y ait pas d'espace avant le point $des=~s/&\#38\;\#39\;/\'/g; $des=~s/&\#38\;\#34\;/"/g; $des=~s/&\#233\;/é/g; $des=~s/&\#233\;p&\#234\;/ê/g; $des=~s/&\#234\;/ê/g; $des=~s/àª/ê/g; $des=~s/é/é/g; $des=~s/ô/ô/g; $des=~s/è/è/g; $des=~s/Ã/à/g; $des=~s/à§/ç/g; print FILEOUT "$des\n"; } } }