#/usr/bin/perl
<<DOC;
Votre Nom : 
JANVIER 2006
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=déclare la variable. Pour le moment le contenu de DUMPFULL correspond à des fichiers séparés (du rép. arb-fils)
my $DUMPFULL1="";
#----------------------------------------
my $output1="SORTIE_filtrage.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>Kozhina Natalia</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) {
open(FIC,$file);
while($ligne=<FIC>) {
if ($ligne=~/<description>(.+)<\/description>/) {
$temp=$1;
$temp=~s/&#38;#39;/\'/g;
$temp=~s/&#38;#34;/"/g;
$temp=~s/&#233;/é/g;
$temp=~s/é/é/g;
$temp=~s/&#234;/ê/g;
$temp=~s/ê/ê/g;
$temp=~s/è/è/g;
$temp=~s/Ã/à/g;
$temp=~s/ç/ç/g;
$temp=~s/à§/ç/g;
$temp=~s/ô/ô/g;

$DUMPFULL1.="\n<fichier>\n<nom>$file</nom>\n<contenu>$temp</contenu>\n</fichier>\n";
}
}
close(F);
}
}

}
#----------------------------------------------