#!/usr/bin/perl <$output1")) { die "Pb a l'ouverture du fichier $output1"}; print FILEOUT "\n"; print FILEOUT "\n"; close (FILEOUT); #################################################### $file=~ s/[\/]$//; &parcoursfichier($file); open (FILEOUT,">>:encoding(utf-8)", "$output1"); print FILEOUT "\n"; close (FILEOUT); exit; #################################################### SOUS-PROGRAMME PARCOURS sub parcoursfichier{ my $path = shift(@_);#on enleve le premier argument qu'on lit, parce que c'est un dossier mais pas fichier qu'on veut opendir(DIR, $path) or die "Could not open file $path: $!\n"; my @contenuRep = readdir(DIR); closedir(DIR); foreach my $fichier (@contenuRep) { next if $fichier =~ /^\.\.?$/; $fichier = $path."/".$fichier; if (-d $fichier) { print " ==> ",$fichier,"\n"; &parcoursfichier($fichier); print " ==> ",$fichier,"\n"; } if (-f $fichier) { if ($fichier=~/$rubrique.*.xml$/){ #CETTE LIGNE PEUT DONNER ERREUR S'IL Y A DES FICHIERS VIDES DANS L'ARBORESCENCE print $fichier, "\n"; open (IN, "<:encoding(utf-8)", $fichier); #open (OUT1, ">>:encoding(utf-8)", $output0); open (OUT2, ">>:encoding(utf-8)", $output1); print OUT2 "\n"; #----------------------------------------------------------- my $ficher="$fichier"; my $rss=new XML::RSS; # nouvelle instance du module #----------------------------------------------------------- $rss->parsefile($fichier); my $nombredechampdescription=0; foreach my $item (@{$rss->{'items'}}) { #pour chaque élément contenu dans $nombredechampdescription++; my $title=$item->{'title'}; # on récupère le texte contenu dans $title.= "."; my $description=$item->{'description'}; # on récupère le texte contenu dans <description> $title=&nettoyage($title); $description=&nettoyage($description); if (!(exists $dico{$title})) { $dico{$title} = 1; my ($titletag, $descriptiontag) = &etiquetage($title, $description); # apres ça, les valeurs des variables $titre et $description sont deja etiquetées print OUT2 "<item><title>$titletag$descriptiontag\n"; } } print OUT2 "\n"; close (OUT2); close (IN); } } } } #################################################### SOUS-PROGRAMME NETTOYAGE sub nettoyage { my $description=shift; $description =~ s/<//g; $description =~ s/]+>//g; $description =~ s/]+>//g; $description =~ s/<\/a>//g; $description=~ s/&#39;/'/g; $description =~ s/&#34;/"/g; $description =~ s/<[^>]+>//g; $description =~s/'/\'/g; return $description } #################################################### SOUS-PROGRAMME ETIQUETAGE sub etiquetage { my ($t, $d) = @_; # Attribution des valeurs d'une liste a des variables # traitement du titre open(TMP, ">:encoding(utf8)", "titre.txt"); print TMP $t; close TMP; # Commande de tokenisation system("perl tokenise-utf8.pl titre.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > titre_tag.txt"); # Commande d'etiquetage system("perl treetagger2xml-utf8.pl titre_tag.txt"); # resultat sur titre_tag.txt.xml open(TMP2, "<:encoding(utf8)","titre_tag.txt.xml"); my $t_tag = ""; my $ligne= ; # lecture 'pour rien' pour que la boucle lise a partir de la deuxieme ligne et comme ça on garde pas l'entete xml dans la variable de texte a etiqueter while (my $ligne = ) { chomp $ligne; $t_tag= $t_tag.$ligne; } close TMP2; # traitement de la description open(TMP, ">:encoding(utf8)", "description.txt"); print TMP $d; close TMP; system("perl tokenise-utf8.pl description.txt | ./tree-tagger -token -lemma -no-unknown french-oral-utf-8.par > description_tag.txt"); # Commande d'etiquetage system("perl treetagger2xml-utf8.pl description_tag.txt"); open(TMP2, "<:encoding(utf8)","description_tag.txt.xml"); my $d_tag = ""; my $ligne= ; while (my $ligne = ) { chomp $ligne; $d_tag= $d_tag.$ligne; } close TMP2; return($t_tag, $d_tag); } #----------------------------------------------