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
| #!/usr/bin/perl
use warnings; use strict;
die "Usage : script fichier_en_entree verbe fichier_en_sortie\n"
if @ARGV != 3;
my $syn = "./" . pop @ARGV;
my $vedetteprincipale = pop @ARGV;
my (%tmp_vs,%ved_syn);
my (@synvedetteprinci,@res2,@res3,);
my ($synvedette,$synotmp,);
while (<>){
my ($vedette,$synons)=split /:/,$_;
if($vedette eq $vedetteprincipale){
@synvedetteprinci = split/,/,$synons;
}
$tmp_vs{$vedette} = $synons;
$ved_syn{$vedette} = $tmp_vs{$vedette};
}
while ( my ($local_ved,$local_syno) = each %ved_syn ){
my @local_syno2=split /,/,$local_syno;
foreach $synotmp (@local_syno2){
my @res=();
foreach $synvedette (@synvedetteprinci){
$synvedette eq $synotmp && push @res, $synvedette;
}
@res && push @res2,@res;
}
@res2 && (@res2 = join(",",@res2))
&& push(@res3,$local_ved,":",@res2,"\n");
@res2=();
}
open SYN,">$syn" or die "E/S : $!";
print SYN @res3 and close SYN; |