lami20j | Salut,
je crois que maintenir sort deux fois à cause de l'existence aussi de se maintenir. A vrai dire je n'ai pas trop décortiqué ton code.
J'ai fait une autre approche concernant ton traitement et d'après le résultat j'ai tiré cette conclusion.
Peut être je n'ai par raison.
Voilà mon script (j'ai utilisé ta liste des verbes et j'ai ajouté de choses bidon pour tester).
Le fichier dico.txt sur le quel j'ai travaillé Code :
- satisfaire:accomplir,exécuter,faire,observer,respecter,tenir
- se conformer:observer,respecter,suivre,tenir
- se maintenir:persister,tenir
- soutenir:continuer,défendre,maintenir,persister,suivre,supporter,tenir
- suivre:accomplir,continuer,observer,respecter,se conformer,soutenir,tenir
- supporter:maintenir,soutenir,tenir
- tenir:accomplir,arrêter,conserver,continuer,défendre,exécuter,faire,garder,maintenir,manier,observer,occuper,persister,respecter,retenir,satisfaire,se conformer,se maintenir,soutenir,suivre,supporter
- aa:gg,fd,dssd,dfsd,dsf,tt
- bb:dsf,fd,gg,rrr
- gg:dsf,dssd,rrr,tt
|
Le script #! /usr/bin/perl
use warnings;
use strict;
my %total_verbe;
my %result_verbe;
my @affiche;
# ouvrir handle vers.* dico.txt
open DICO,"dico.txt" or die "E/S : $!\n";
# récuperation des données
while (<DICO> ) {
my ($verbe,$liste_synonyme) = split /:/,$_,2;
push @{$total_verbe{$verbe}}, split /,/,$liste_synonyme ;
}
# la vedette principale (ton cas tenir)
print "Entrez le verbe vedette principale : " and chomp(my $vedette_p =<STDIN> );
# récuperation des verbes qu'ont parmi les synonymes la vedette principale
# ton cas : satisfaire, se conformer........,supporter
foreach (keys %total_verbe) {
if( grep { /$vedette_p/ } @{$total_verbe{$_}} ) {
push @{$result_verbe{$_}}, @{$total_verbe{$_}};
}
}
# affichage des verbes qu'ont comme synonyme le verbe vedette principale (tenir)
print "Verbes qu'ont comme synonyme la vedtte principalle $vedette_p :\n";
foreach (sort keys %result_verbe) {
print "$_\n";
}
# le verbe à afficher à la demande
print "Entre le verbe à consulter : " and chomp(my $v =<STDIN> );
foreach my $vv ( @{$result_verbe{$v}} ) {
push @affiche, grep { /$vv/ } @{$total_verbe{$vedette_p}};
}
{
local $"="\n";
print "$v : \n@affiche\n";
}
|
Le resultat Code :
- lami20j@debian:~/bin/my_deb_perl$ perl dico_hardware.pl
- Entrez le verbe vedette principale : tenir
- Verbes qu'ont comme synonyme la vedtte principalle tenir :
- satisfaire
- se conformer
- se maintenir
- soutenir
- suivre
- supporter
- tenir
- Entre le verbe à consulter : supporter
- supporter :
- maintenir
- se maintenir
- soutenir
- lami20j@debian:~/bin/my_deb_perl$ perl dico_hardware.pl
- Entrez le verbe vedette principale : tenir
- Verbes qu'ont comme synonyme la vedtte principalle tenir :
- satisfaire
- se conformer
- se maintenir
- soutenir
- suivre
- supporter
- tenir
- Entre le verbe à consulter : se maintenir
- se maintenir :
- persister
- lami20j@debian:~/bin/my_deb_perl$ perl dico_hardware.pl
- Entrez le verbe vedette principale : tenir
- Verbes qu'ont comme synonyme la vedtte principalle tenir :
- satisfaire
- se conformer
- se maintenir
- soutenir
- suivre
- supporter
- tenir
- Entre le verbe à consulter : soutenir
- soutenir :
- continuer
- défendre
- maintenir
- se maintenir
- persister
- suivre
- supporter
- lami20j@debian:~/bin/my_deb_perl$ perl dico_hardware.pl
- Entrez le verbe vedette principale : gg
- Verbes qu'ont comme synonyme la vedtte principalle gg :
- aa
- bb
- Entre le verbe à consulter : aa
- aa :
- dssd
- dsf
- tt
- lami20j@debian:~/bin/my_deb_perl$ perl dico_hardware.pl
- Entrez le verbe vedette principale : gg
- Verbes qu'ont comme synonyme la vedtte principalle gg :
- aa
- bb
- Entre le verbe à consulter : bb
- bb :
- dsf
- lami20j@debian:~/bin/my_deb_perl$
|
Je n'ai pas traité l'écriture de résultat dans un autre fichier.
C'est possible qu'à cause des balises les slashes ou antislashes n'apparaissent pas comme dans le script. Je vais regarder une fois
le message valider.
lami20j Message édité par lami20j le 18-04-2006 à 20:13:39
|