1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
| sub readOutput {
open( READ, "<", "output.txt" ) || die("Erreur");
binmode( READ, ":encoding(utf8)" );
# Liste des noms de balises à retrouver
# ex : <date_jourmoislieu=xxxxxx>
my @tab_pattern = (
"option", "date_jourmois",
"date_jourmoislieu", "date_jourmoisannee",
"date_enumjourmois", "date_range_jourjourmois",
"date_det_jour", "date_det_jourmois",
"date_annee", "heure_rdv",
"heure_aheure", "heure_lieu",
"sujet_mot", "sujet_demande",
"sujet_verre", "sujet_rdv",
"sujet_heurelieu", "mixte_jourmoisheure",
"lieu_dans", "lieu_au",
"lieu_lieudate", "lieu_lieudateheure",
"referent_jour", "referent_journb",
"referent_jourheure", "referent_jourlieu",
"referent_joursujet", "referent_journbheure",
"referent_heurejour", "sujet_motdate",
"sujet_motpays", "referent_journbmois",
"referent_sujet", "lieu_chez",
"lieu_adresse", "lieu_ifadresse",
"canon_rdvlieu", "canon_disons",
"canon_rdv_aupire", "heure_convenir",
"referent_indice", "heure_range_unique",
"lieu_auditoire", "canon_rdvheure",
"sujet_motdateheure", "canon_propose"
);
my $pattern_taille = @tab_pattern;
my %hash_match = ();
my $count = 0;
# Lecture du fichier .txt
while (<READ>) {
# Imprime le contenu du fichier
print($count . " : " . "$_" );
$count++;
# Utilisation des noms de balises.
foreach my $pattern ( @tab_pattern ){
# Si la balise existe déjà dans la table de Hash,
# on récupère le tableau qui y était précédemment,
# on y ajoute les nouvelles formes "matchées"
# et on stocke à nouveau le tableau dans la hash.
if ( exists $hash_match{$pattern} ) {
if ( $_ =~ /<$pattern=/ ){
my @tab_temporaire = &push_tab ( $_, $pattern );
my @tab_yet_present = @{$hash_match{$pattern}};
push(@tab_yet_present, @tab_temporaire);
$hash_match{$pattern} = \@tab_yet_present;
}
}
# Lorsqu'une ligne continent une des balises,
# on récupère son contenu que l'on met dans un tableau
# et on stocke la référence de ce tableau dans la table de Hash.
else {
if ( $_ =~ /<$pattern=/ ){
my @tab_temporaire = &push_tab( $_, $pattern );
$hash_match{$pattern} = \@tab_temporaire;
}
}
}
}
close(READ);
# On affiche le contenu des tableaux.
foreach my $k (keys(%hash_match)){
&toStringTab( "$k : ", $hash_match{$k} );
}
} |
Partager