#!/usr/bin/perl binmode(STDOUT, ":utf8"); # Encodage pour la sortie #----------------------------------------------------------- my $rep="$ARGV[0]"; # RSS 2021: premier argument my $rubrique="$ARGV[1]"; # La rubrique : dans ce cas est le cinema dont le numéro est 3476 $rep=~ s/[\/]$//; # Verifcation du nom de repertoire "/" open my $txt_output, ">:encoding(UTF-8)", "corpusTitreDesc.txt"; open my $xml_output, ">:encoding(UTF-8)", "preTitreDesc.xml"; #---------------------------------------- my $header = "\n\n"; print $xml_output $header; # Ecrire de balise header dans le XML &parcoursarborescencefichiers($rep); print $xml_output ""; # Fermeture du balise corpus close $txt_output; # Fermeture des sorites close $xml_output; exit; #---------Sour-programme pour parcourir l'arborescence RSS sub parcoursarborescencefichiers { my $path = shift(@_); # RSS 2021 opendir(DIR, $path) or die "can't open $path: $!\n"; # Ouverture et lire le RSS my @files = readdir(DIR); closedir(DIR); # Fermeture de RSS foreach my $file (@files) { next if $file =~ /^\.\.?$/; $file = $path."/".$file; if (-d $file) { &parcoursarborescencefichiers($file); } if (-f $file) { # Si c'est un fichier, continue... if ($file =~ /$rubrique.+\.xml$/) { open my $input, "<:encoding(UTF-8)", $file; undef $/; # Suppremer la saut ligne par default my $line=<$input>; # Lire les fichiers ligne par lingn et le fermer close($input); while ($line=~/(.+?)<\/title>.+?<description>(.+?)<\/description>/gs) { my $title = $1; # Assigner les variable pour titre et description my $description=$2; my ($clean_title, $clean_description)=&clean($title, $description); # Nettoyer les titres et descriptions print $txt_output "TITRE : $clean_title \n DESCRIPTION : $clean_description \n#---------------------#\n"; print $xml_output "<item>\n<titre>$clean_title</titre>\n<description>$clean_description</description>\n</item>\n"; } } } } } sub clean { # Pour nettoyer les titres et descriptions my @clean_table=(); foreach my $var (@_) { $var=~s/<!\[CDATA\[//; $var=~s/\]\]>//; push @clean_table, $var; } return @clean_table }