#!/usr/bin/perl $dicopath="."; $dico="$dicopath/"; $dico.="$ARGV[0]"; $vedetteprincipale.="$ARGV[1]"; $syn=$ARGV[2]; #ouverture du dictionnaire open(DICO, $dico); #on récupére la liste des synonyme de la vedette principale que l'on met dans un tableau while (){ ($vedette,$synons)=split(/:/,$_); if(($vedette) eq ($vedetteprincipale)){ @synvedetteprinci = split(/,/,$synons); } } close(DICO); #on compare les synomnyme de chaque vedette avec le résultat des synonyme de la vedette principal #S'il le synonyme apparait dana la liste on le conserve sinon on continue #on construit ainsi le nouveau minidico open(DICO, $dico); while (){ #création de la table de hachage ($vedette,$syno)=split(/:/,$_); %tmp_vs=($vedette,$syno); %ved_syn=(%ved_syn,%tmp_vs); } while (($local_ved,$local_syno) = each %ved_syn){ @local_syno2=split(/,/,$local_syno); foreach $synotmp (@local_syno2){ @res=(); foreach $synvedette (@synvedetteprinci){ if($synvedette eq $synotmp){ push(@res, $synvedette); } } if(@res!=null){ push(@res2,@res); } } if(@res2 !=null){ @res2 = join(",",@res2); push(@res3,$local_ved,":",@res2,"\n"); } @res2=(); } close(DICO); #on enregistre le résultat dfans le fichier open(SYN,">$syn"); print(SYN @res3); close(SYN);