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
| #
open (OUT, ">OUT.txt");
open(TERMINO,"$ARGV[0]");
#print $ARGV[0];
while (my $terme=<TERMINO>)
{ # je lis chq terme de mon fichier PATRON
#print $terme;
chomp($terme); #on supprime le dernier élément de la string
$terme=~s/ +/ /g; # on supprime les +
$terme=~s/\r//g; # on supprime les retour chariot
print "$terme\n"; # on affiche le patron
# CORDIAL
open(CORDIAL,"$ARGV[1]"); # on ouvre le fichier CORDIAL
while (my $ligne=<CORDIAL>)
{ # on lit ligne à ligne
chomp($ligne); # on supprime le dernier caractère
$ligne=~s/\r//g; # on supprime le retour chariot
if ($ligne!~/PCT/)
{ # si la liste n'est pas composé de PCT
my @LISTE=split(/\t/,$ligne); #on met le contenu de la ligne de CORDIAL tout ce qui se trouve entre les tabulations dans la LISTE
push(@POS,$LISTE[2]); # le PATRON se trouve à l'indice 2 de la liste
push(@TOKEN,$LISTE[0]); #le token se trouve à l'indice 0
} # on a : @pos {PREP} et @token {de}
else
{
#print "<@TOKEN>\n";
# print "<@POS>\n";
# print "TERME CHERCHE:$terme \n";
my $a=<STDIN>;
my $pos=join("\t", @POS); #il sépare tous les éléments de la liste
print "voilà la suite de patrons dans le fichier cordial pour une seule phrase : ".$pos."\n";
my $token=join("\t",@TOKEN);
print "voilà les tokens dans le fichier cordial pour une seule phrase : ".$token."\n";
my $cmptdetrouvage=0;
while($pos=~/$terme/g)
{ # tant que dans CORDIAL, il y a un PATRON, alors
$cmptdetrouvage++; # on incrémente le compteur
print "J'ai trouvé le PATRON \'".$terme."\' de patron.txt dans le fichier CORDIAL"."\n";
#print "TROUVE $cmptdetrouvage fois \n";
print "$terme est bien dans $pos \n";
my $avantcorespondant=$`;
my $comptagedeblancdansterme=0;
while($terme=~m/\t/g) # tant qu'il y a un espace dans le PATRON
{
$comptagedeblancdansterme++; # on incrémente
print "Il y a : ".$comptagedeblancdansterme." blancs dans termes"."\n";
}
my $comptagedeblanc=0;
while($avantcorespondant=~m/\t/g) # tant qu'il y a un blanc dans la variable
{
$comptagedeblanc++; #on incrémente comptage de blanc
print "Il y a : ".$comptagedeblanc." blancs dans ?"."\n";
}
for(my $i=$comptagedeblanc; $i<=$comptagedeblanc + $comptagedeblancdansterme; $i++)
{
print OUT $TOKEN[$i]." ";
}
print OUT "\n";
}
@POS=();
@TOKEN=();
}
}
close(CORDIAL);
}
close(TERMINO); |