#C:\Perl\bin\perl5.8.8.exe -w use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); #--------------------------------------Récupération des données du formulaire read(STDIN, my $donnees, $ENV{'CONTENT_LENGTH'}); my @champs_formulaire = split(/&/, $donnees); my ($champ, $nom, $valeur); my %formulaire; foreach $champ (@champs_formulaire) { (my $nom, my $valeur) = split(/=/, $champ); $valeur =~ tr/+/ /; $valeur =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $valeur =~ s/</</g; $valeur =~ s/>/>/g; $formulaire{$nom} = $valeur; } my $mot=$formulaire{rechercher}; $mot=~tr/A-Z/a-z/; #transformation en miniscule my $langue=$formulaire{langue}; #-------------------------------------------------Traitement if (!open(FILEDICO, "<lexik.xml")){die "Pb a l'ouverture du fichier lexik.xml";}; if (!open(FILEIN, "<chansons.xml")){die "Pb a l'ouverture du fichier Alignement.xml";}; print "Content-type: text/html\n\n"; print '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">', "\n"; print "<html><head><title>Résultat de la recherche</title>\n"; print "<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">"; print "<style type=\"text/css\"><!--th {font-weight:bolt}--></style></head>\n"; print "<body bgcolor=\"#CCCCC\"><a name=\"debut\"><ul><li><h4>Traduction : <span style=\"color:red\">"; my $fr; my $kb; my $traduction; while(my $ligne=<FILEDICO>) { if ($ligne=~/<mot(.+)<fr>(.+)<\/fr><kb>(.+)<\/k(.+)/i) { $fr=$2; $kb=$3; if ($fr eq $mot) { print "$fr</span> = <span style=\"color:green\">$kb<\/span></h4></li></ul>"; $traduction=$kb; last; } if ($kb eq $mot) { print "$kb</span> = <span style=\"color:green\">$fr<\/span></h4></li></ul>"; $traduction=$fr; last; } } } if (eof(FILEDICO)) { print "non trouvée</span></h4></li></ul>"; } close(FILEDICO); my $j=0; print "<table border=\"0\" rules=\"rows\" style=\"margin-left:10px;margin-right:10px\">"; my $auteur=""; my $titre=""; my $k; while(my $ligne=<FILEIN>) { if ($ligne=~/<chanson num="(.+)" auteur="(.+)" titre="(.+)">/) { $auteur=$2; $titre=$3; $k=0; } if ($ligne=~/<element langue="fr">(.+)<\/element><element langue="kb">(.+)<\/element>/) { $fr=$1; $kb=$2; $k++; if ($langue eq "kabyle") { if ($kb=~/$mot/) { $j++; $kb=~s/$mot/<span style=\"color:red\">$mot<\/span>/; $fr=~s/$traduction/<span style=\"color:green\">$traduction<\/span>/; if ($j==1) { print "<tr><th> n° </th><th> Contexte langue source </th><th> Contexte langue cible </th><th> Auteur <th> chanson </th><th> Ligne</th></tr>\n"; } print "<tr><th> $j - </th><td> $kb </td><td> $fr </td><td> $auteur </td><td> $titre </td><td> $k </td></tr>\n"; } if ($fr=~/$mot/) { $j++; $fr=~s/$mot/<span style=\"color:red\">$mot<\/span>/; $kb=~s/$traduction/<span style=\"color:green\">$traduction<\/span>/; if ($j==1) { print "<tr><th> n° </th><th> Contexte langue source </th><th> Contexte langue cible </th><th> Auteur <th> chanson </th><th> Ligne</th></tr>\n"; } print "<tr><th> $j - </th><td> $kb </td><td> $fr </td><td> $auteur </td><td> $titre </td><td> $k </td></tr>\n"; } } else { if ($fr=~/$mot/) { $j++; $fr=~s/$mot/<span style=\"color:red\">$mot<\/span>/; $kb=~s/$traduction/<span style=\"color:green\">$traduction<\/span>/; if ($j==1) { print "<tr><th> n° </th><th> Contexte langue source </th><th> Contexte langue cible </th><th> Auteur <th> chanson </th><th> Ligne</th></tr>\n"; } print "<tr><th> $j - </th><td> $fr </td><td> $kb </td><td> $auteur </td><td> $titre </td><td> $k </td></tr>\n"; } if ($kb=~/$mot/) { $j++; $kb=~s/$mot/<span style=\"color:red\">$mot<\/span>/; $fr=~s/$traduction/<span style=\"color:green\">$traduction<\/span>/; if ($j==1) { print "<tr><th> n° </th><th> Contexte langue source </th><th> Contexte langue cible </th><th> Auteur <th> chanson </th><th> Ligne</th></tr>\n"; } print "<tr><th> $j - </th><td> $fr </td><td> $kb </td><td> $auteur </td><td> $titre </td><td> $k </td></tr>\n"; } } } } print "<tr> </tr></table>"; if ($j>18){print "<a href=\"#ebut\">Haut de page</a>";} print "<br/><br/><br/><i><div align=\"center\" style=\"font-size:75%\">Jugurtha Aït Hamlat - pluriTAL ©2009, INALCO, Paris 10, Paris 3</div></i></body></html>\n"; close(FILEIN);