#/usr/bin/perl #----------------------------------------------------------- use utf8; <:encoding(utf-8)", "sortie-$rubrique-xmlrss.txt"); open(OUTXML, ">:encoding(utf-8)", "sortie-$rubrique-xmlrss.xml"); print OUTXML "\n"; print OUTXML "\n"; #---------------------------------------- &parcoursarborescencefichiers($rep); #procédure récursive close OUT; print OUTXML "\n"; close OUTXML; 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) { print "on entre dans $file \n"; &parcoursarborescencefichiers($file); #procédure récursive } if (-f $file) { if ($file=~/$rubrique.+\.xml$/) { print $i++," : $file \n"; my $rss=new XML::RSS; eval {$rss->parsefile($file); }; if( $@ ) { $@ =~ s/at \/.*?$//s; # module line number print STDERR "\nERROR in '$file':\n$@\n"; } else { foreach my $item (@{$rss->{'items'}}) { my $description=$item->{'description'}; my $titre=$item->{'title'}; my ($titrenettoye,$descriptionnettoye) = &nettoyage($titre,$description); if (exists $doublons{$titrenettoye}) { $doublons{$titrenettoye}++; } else { $doublons{$titrenettoye}=1; print OUT "$titrenettoye\n"; print OUT "$descriptionnettoye\n"; print OUTXML "
\n"; print OUTXML "$titrenettoye\n"; print OUTXML "$descriptionnettoye\n"; print OUTXML "
\n"; } } } } } } } sub nettoyage { my ($element1, $element2) = @_; # on accède aux éléments de la variable @_ qui contient les données textuelles des titres et des descriptions # traitement $element1 .= "." ; # on rajoute un point à la fin de chaque phrase, deuxième élément n'en a pas besoin $element1, $element2 =~ s/&#39;/'/g; # on change les &#39; en apostrophes $element1, $element2 =~ s/'/'/g; # on change les ' en apostrophes $element1, $element2 =~ s/&#34;/"/g; # on change les /&#34; en guillements $element1, $element2 =~ s/"/"/g; # on change les /" en guillements $element1, $element2 =~ s/é/é/g; # on change les ಡ en é (bien transcodé grace à l'usage de utf8 au début du script) $element1, $element2 =~ s/ê/ê/g; # on change les ê en ê (bien transcodé grace à l'usage de utf8 au début du script) $element1, $element2 =~ s/
//g; return $element1, $element2; # on renvoit deux éléments passés par le nettoyage } #-----------------------