#/usr/bin/perl
<<DOC; 
Votre Nom : 
JANVIER 2005
 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 le résultat du filtrage :
<PARCOURS><NOM>mon nom</NOM><FILTRAGE>............</FILTRAGE></PARCOURS>
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 $DUMPFULL1="";
#----------------------------------------
my $output1="SORTIE.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>Arianna</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) && ($file =~/\.xml$/)) {
#       TRAITEMENT à réaliser sur chaque fichier
#       Insérer ici votre code (le filtreur)
    &filtreur($file);
	 print $i++,"\n";
	}
    }
}
#----------------------------------------------

sub filtreur {
	my $fichier = shift(@_);
	open(FICH_IN, "$fichier");
		while ($ligne=<FICH_IN>)  {
			if ($ligne =~ /(\<title\>[^<]+\<\/title\>)/)
				{$DUMPFULL1.="$1\n";}
			if ($ligne =~ /(\<description\>[^<]+\<\/description\>)/)
				{$DUMPFULL1.="$1\n";}
		}
		close(FICH_IN);
}
