Ci-dessous le script du Perl utilisé pour l’étape 1:



#!/usr/bin/perl
<<DOC;
Guanhua WANG; Audrey CORNU
usage: perl parcours-arborescence-fichiers.pl repertoire-a-parcourir
Entrée: le nom du répertoire contenant les fichiers à traiter
Sortie: un fichier construit structuré contenant sur chaque lignee nom du fichier et le résultat du filtrage: <FICHIER><NOM>du fichier</NOM><CONTENU>du filtrage</CONTENU></FICHIER>
DOC

# le nom du répertoire est passé en argument au programme
my $rep="$ARGV[0]";
# on s'assure que le nom du rep ne se termine pas par un slash, si non, le supprimer
$rep=~ s/[\/]$//;
# initialiser une variable contenant le flux de sortie
my $DUMPFULL1="";
my $DUMPFULL2="";
# ouvrir le fichier de sortie
my $output1="SORTIE.xml";
if (!open (FILEOUT,">$output1"))
{
	die "Pb a l'ouverture du fichier $output1";
}
# lancer le parcours recursif de l'arbre de fils...
my $i=1;
&parcoursarborescencefichiers($rep);#recurse!
# formater la sortie: fichier XML avec en-tete et integrer le contenu de la variable contenant le filtrage
print FILEOUT "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
print FILEOUT "<PARCOURS>\n";
print FILEOUT "<NOM>Guanhua WANG</NOM><NOM>Audrey CORNU<\/NOM>\n";
print FILEOUT "<FILTRAGE>".$DUMPFULL1."</FILTRAGE>\n";
print FILEOUT "</PARCOURS>\n";
close(FILEOUT);
my $output2="SORTIE.txt";
open (OUT, ">$output2");
print OUT $DUMPFULL2;
close(OUT);
exit;

# declaration de la procedure du parcours
sub parcoursarborescencefichiers
{
	my $path = shift(@_);
	# ouvrir le repertoire
	opendir(DIR, $path) or die "can't open $path: $!\n";
	# recuperer le contenu du rep
	my @files = readdir(DIR);
	closedir(DIR);
	# verifier le statut de chaque element (rep ou fichier)
	foreach my $file (@files)
	{
		next if $file =~ /^\.\.?$/;
		# commencer par ecrire le chemin complet de cet element
		$file = $path."/".$file;
		if (-d $file)
		{
			# relancer le parcours si l'element est un rep
			&parcoursarborescencefichiers($file); #recurse!
		}
		if (-f $file)
		{
			# Si fichier: TRAITEMENT a realiser sur chaque fichier (filtrear)
			open my $input, "<:encoding(iso-8859-1)", $file;
			my $texte = "";
			while (my $ligne =<$input>) #filtrage
        	{
          	chomp $ligne;
          	$ligne =~s/\r//g;
          	$texte = $texte.$ligne;
        	}
        	$texte =~ s/> +</></g;
			if ($texte =~ /<channel><title>(.+?)<\/title><link>.+?<\/link><description>(.+?)<\/description>.+?<\/url><title>(.+?)<\/title>/)
			{
				my $TITLE=$1;
				my $DESCRIPTION=$2;
				my $urltitle=$3;
				$DUMPFULL1 = $DUMPFULL1."<abstract>".$TITLE."</abstract>\n"."<description>".$2."</description>\n"."<abstract>".$3."</abstract>\n";
				$DUMPFULL2 = $DUMPFULL2.$TITLE."\n".$DESCRIPTION."\n".$urltitle."\n";
			}
			while ($texte =~ /<item><title>(.+?)<\/title>.+?<description>(.+?)<\/description>/g)
			{
				my $title=$1;
				my $description=$2;
				$description =~ s/<.+?>//g;
          		$title =~ s/&amp//g;
          		$title =~ s/\\E9/é/g;
          		$DUMPFULL1 = $DUMPFULL1."<article numero=\"$i\">\n";
				$DUMPFULL1 = $DUMPFULL1."<abstract>".$title."</abstract>\n"."<description>".$description."</description>\n</article>\n";
				$DUMPFULL2 = $DUMPFULL2.$title."\n".$description."\n";
				$i+=1;
			}
			close $input;
		}
	}
}