Bonjour à tous,
Je ne pensais pas rencontrer ce genre de problème en Perl un jour, mais là, j' .
Je dispose d'un lexique de noms propres, une forme par ligne dans un fichier texte trié par les bons soins de la fonction sort du plus petit au plus grand. Dans ce fichier, "Allemagne de l'Est" se situe avant "Allemagne".
Le problème, c'est que quand je fais une recherche dichotomique sur ce fichier, j'utilise la fonction lt pour savoir si le mot que je cherche est situé avant ou arpès le mot que je teste, et que cette fonction considère que la forme "Allemagne" est plus petite que la forme "Allemagne de l'Est". Résultat, à chaque fois que j'ai une forme simple et une forme composée à partir de celle-ci dans mon lexique, ma recherche n'aboutit pas.
voici le code de ma recherche:
my ($forme1) = shift @_;
#initialisation des variables pour la recherche dichotomique
my ($debut)=0;
my ($fin)=$#lexique_NP;
my ($tampon)=0;
my ($milieu);
#comparer les deux listes
while($debut<=$fin) {
$milieu= ($debut+$fin)/2;
$milieu=~s/(.*),.*/$1/;
chomp $lexique_NP[$milieu];
#si la forme est identifiée, modifier la valeur de tampon
if($forme1=~/^$lexique_NP[$milieu]$/i){
$tampon=1;
$debut=$fin+1;
}
elsif($forme1 lt $lexique_NP[$milieu]){
$fin=$milieu-1;
}
else{
$debut=$milieu+1;
}
}
return($tampon);
Je ne vois pas comment faire ma comparaison sans lt, quelqu'un pour m'éclairer?
Merci par avance