open my $fh, "<:utf8", '/home/hp/Bureau/Master/toto.txt';
open my $fh1, ">:utf8", '/home/hp/Bureau/Master/resultatML.txt';
open my $fh2, ">:utf8", '/home/hp/Bureau/Master/essai10.txt';
my $linenum = 0;
my (@bloc, @words);
foreach(<$fh> ) {
unless ($linenum++ or not /^\x{feff}/) {
s/^\x{feff}// ;
}
if (/^\s*$/) {
if (0+@bloc) {
#print $fh2 join(" + ", @bloc), "\n";
@bloc = ();
}
}
#sinon
else {
#On vire les espaces en début et en fin
s/^\s+|\s+$//g;
#On découpe la ligne comme des mots séparés par des espaces
@words = split /\s+/;
if (defined($h1{$words[0]}) and defined($h2{$h1{$words[0]}})) {
if ( $h1{$words[0]} ~~ "Mot-Chef" ) {
push @bloc, "$words[0]\n";
}
}
else {
# push @bloc, "???";
}
}
}
if (0+@bloc) {
print $fh2 join("\n", @bloc), "\n";
}
close $fh;
le problème c'est que je ne sais pas pkoi il y a des mots qui possède comme etiquette "Mot-Chef" mais qui n'apparaissent pas dans mon fichier resultat !! plz si quelqu'un peut m'aider je serais très reconnaissante !!!!
Marsh Posté le 17-03-2014 à 08:22:59
Bonjour Tout le monde,
Je débute en perl ,
j'ain un fichier sous cette forme :
حَتَّى Mot-Outil
شَيْ Negation
رَاهُو Mot-Outil
بِاللَاهِي Marqueur-Politesse
يْعَيْشِكْ Marqueur-Politesse
شُوفْلِي Demande
وَ Coordination
إِلَّا Mot-Outil
إِبْعَثْنِي Marqueur-Envoyer
لِشْكُونْ Outil-Question
يْحِلِّي Marqueur-Ouvrir
مُشْكِلْتِي Marqueur-Probleme
شُوفْ Marqueur-Voir
et ma base prend la forme suivante :
<mot>
<synonyme> مَكْتَبْ</synonyme>
<etiquette>Mot-Objet</etiquette>
</mot>
<mot>
<synonyme> عْمِلْتْ</synonyme>
<etiquette>Marqueur-Faire</etiquette>
</mot>
<mot>
<synonyme> الشَافْ</synonyme>
<etiquette>Mot-Chef</etiquette>
</mot>
<mot>
<synonyme> فَسَّرْلِي</synonyme>
<etiquette>Marqueur-Expliquer</etiquette>
</mot>
mon but est d'extraire tous les Y qui ont une etiquette X voila mon code :
le problème c'est que je ne sais pas pkoi il y a des mots qui possède comme etiquette "Mot-Chef" mais qui n'apparaissent pas dans mon fichier resultat !!
plz si quelqu'un peut m'aider je serais très reconnaissante !!!!