#======================================================
# Le programme du
parcours de l'arborescence
#=====================================================
#!/usr/bin/perl
use warnings;
use diagnostics;
use strict;
<<DOC;
MAAFA ZAHIR DESS IM INALCO
FEVRIER 2006
Usage: perl <parcours-arborescence-fichiers.pl> <nom-du-repertoire>
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 résultat du filtrage:
<FICHIER><NOM>NOM_FICHIER</NOM><CONTENU>
CONTENU_TEXTE </CONTENU></FICHIER>
DOC
#=============== LE PROGRAMME PRINCIPAL ==================
#==================== déclaration des variables ====================
my $rep="$ARGV[0]"; #
le répertoire en entrée
my
$DUMPFULL1="";
# le flux de sortie
my $output1="sortie.xml"; # le fichier en sortie
my $i=0;
$rep=~s/[\/]$//; # supprimer le
slash final
#==================== ouvrir le fichier en ecriture ==================
if (!open (FILEOUT,">$output1")) { die "Pb a l'ouverture du
fichier $output1"};
#=================== le parcours de
l'arbre =====================
&parcoursarborescencefichiers($rep);
#==================== le fichier xml final ========================
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\"
?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>MAAFA ZAHIR</NOM>\n";
print FILEOUT
"<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
exit;
#=========== FIN DU PROGRAMME PRINCIPAL ===============
#======================================================
# La procedure : parcoursarborescencefichier
#======================================================
sub parcoursarborescencefichiers {
#==============Déclaration des variables==============
my $path = shift(@_);
my $f;
my $ligne;
#=============================================
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) {
# creation de la balise <NOM> pour sauvegarder le nom du
fichier
$DUMPFULL1=$DUMPFULL1.'<FICHIER><NOM>'."$file".'</NOM><CONTENU>';
# lecture du contnu du fichier xml en entrée
if ($file=~/AFP/)
{
open (FPUT,'<:encoding(utf8)',"$file");
}
else
{
open (FPUT,'<:encoding(iso-8859-1)',"$file");
}
$f='';
while (defined( $ligne=<FPUT>))
{
chomp($ligne);
$f=$f.$ligne;
}
# extraire les contenus des balises description
while
($f=~s/<description>([^<]*)<\/description>//)
{
$DUMPFULL1=$DUMPFULL1.$1;
}
#remplacement des caracteres spéciaux
while ($DUMPFULL1=~m/&#([0-9]+);/) {$DUMPFULL1=~s/&#([0-9]+);/chr($1)/ge;}
$DUMPFULL1=$DUMPFULL1.'</CONTENU></FICHIER>'."\n";
close(FPUT);
}
}
}