#!/usr/bin/perl

<<DOC;
Nom : Olga Semenova
JANVIER 2005
 Le programme prend en entrée le fichier contenant le résultat du traitement produit par
 Cordial et construit en sortie un fichier structuré contenant sur chaque ligne le résultat d'étiquetage :
 <ELEMENT><CATEGORIE>""</CATEGORIE><LEMME>""</LEMME><FORME>""</FORME></ELEMENT>

DOC

#-----------------------------------------------------------
#Ouverture du fichier passé en argument au script et association à un pointeur de fichier;
open(FILEINPUT,"$ARGV[0]");

#Ouverture du fichier de sortie en mode d'écriture;
#le fichier est associé au pointeur SORTIE;
open(SORTIE, ">RESULTAT-Cordial.xml");

#-----------------------------------------------------------
#on commence à formater la sortie : fichier XML avec entête
print SORTIE "<?xml version=\"1.0\" encoding=\"iso-8859-1\" ?>\n";
print SORTIE "<RESULTATCORDIAL>\n";
print SORTIE "<NOM>Votre nom</NOM>\n";
print SORTIE "<ETIQUETAGE>\n";

#-----------------------------------------------------------
#Parcours du fichier associé au pointeur FILEINPUT;
#Chaque ligne est stockée dans la variable $ligne;
while ($ligne = <FILEINPUT>)
        {
        #On vérifie si la ligne contient le motif ci-dessous;

        ###Syntaxe de l'expression régulière:
           #^ = commence par,
           #\d = un chiffre quelconque,
           #\t = tabulation;
           #([^\t]+) = ce qu'on veut récuperer = une suite de caractères (+ = 1 ou n fois) sauf tabulation;
           #$ = fin de chaîne;

        if ($ligne=~ /^\d\t([^\t]+)\t([^\t]+)\t(.+)$/)  {
            #à chaque variable par défaut (representant une suite de caractères recherchée) on  attribue une autre variable, pour en suite effectuer des remplacements;
            $cat="$3";
            $lemme="$2";
            $forme="$1";

            #on remplace les caractères réservés en XML "<" et ">"
            #(évite erreur d'interprétation XML)
            $forme=~s/</&lt;/g;
            $forme=~s/>/&gt;/g;
            $lemme=~s/</&lt;/g;
            $lemme=~s/>/&gt;/g;
            $cat=~s/</&lt;/g;
            $cat=~s/>/&gt;/g;

          #on continue à formater la sortie par rajout du résultat de l'étiquetage sous la forme structurée;
          print SORTIE "<ELEMENT>\n<CATEGORIE>$cat</CATEGORIE>\n<LEMME>$lemme</LEMME>\n<FORME>$forme</FORME>\n</ELEMENT>\n";
        }
}
#-----------------------------------------------------------

#on finit de formater la sortie structurée
print SORTIE "</ETIQUETAGE>\n";
print SORTIE "</RESULTATCORDIAL>\n";

#-----------------------------------------------------------
#on ferme les fichiers d'entrée et de sortie
close(FILEINPUT);
close(SORTIE);