#/usr/bin/perl <:encoding(utf8)","sortie-slurp_$rubrique.txt"; open my $OUTXML,">:encoding(utf8)","sortiexml-slurp_$rubrique.xml"; print $OUTXML "\n"; print $OUTXML "\n"; my %dico_des_titres=(); my $numberItem=0; my $nbFile=0; #---------------------------------------- &parcoursarborescencefichiers($rep); #recurse! #---------------------------------------- print $OUTXML "\n"; close $OUT; close $OUTXML; print "Nb item : $numberItem \n"; exit; #---------------------------------------------- sub parcoursarborescencefichiers { my $path = shift(@_); opendir(my $DIRhandle, $path) or die "can't open $path: $!\n"; my @files = readdir($DIRhandle); closedir($DIRhandle); foreach my $file (@files) { next if $file =~ /^\.\.?$/; $file = $path."/".$file; if (-d $file) { &parcoursarborescencefichiers($file); #recurse! } if (-f $file) { if ($file =~/$rubrique.+xml$/) { print $nbFile++," Traitement de : ",$file,"\n"; open my $fic,"<:encoding(utf8)",$file; $/=undef; #ou $\="" my $textelu=<$fic>; close $fic; while ($textelu=~/.*?(.+?)<\/title>.+?<description>(.+?)<\/description>/sg) { my $titre=$1; my $description=$2; $numberItem++; if (!(exists $dico_des_titres{$titre})) { $dico_des_titres{$titre}=$description ; # Appel du sous-programme de nettoyage ($titre,$description)=&nettoyage($titre,$description); # Ecriture des résultats en sorties print $OUT $titre,"\n"; print $OUT $description,"\n"; print $OUT "--------------------\n"; print $OUTXML "<item>\n"; print $OUTXML "<titre>$titre</titre>\n"; print $OUTXML "<description>$description</description>\n"; print $OUTXML "</item>\n"; } } } } } } #---------------------------------------------- sub nettoyage { #my $titre=shift(@_); autre solution en vidant la liste des arguments du programmes... #my $description=shift(@_); my $titre = $_[0]; my $description = $_[1]; $titre=~s/^<!\[CDATA\[//; $titre=~s/\]\]>$//; $description=~s/^<!\[CDATA\[//; $description=~s/\]\]>$//; $description=~s/<.+?>//g; $description=~s/&#39;/'/g; $description=~s/&#34;/"/g; $titre=~s/<.+?>//g; $titre=~s/&#39;/'/g; $titre=~s/&#34;/"/g; $titre=~s/$/\./g; $titre=~s/\.+$/\./g; return $titre,$description; }