use strict; use locale; if ($#ARGV != 1){ die "Usage : ", $0, " LEXIQUE_REFERENCE LEXIQUE\n"; } my %lex1 = %{lire_lex($ARGV[0])}; my %lex2 = %{lire_lex($ARGV[1])}; foreach my $f (keys %lex2){ if (not defined($lex1{$f})){ print "1\t", $f, "\n"; } else{ foreach my $c (keys %{$lex2{$f}}){ if (not defined($lex1{$f}{$c})){ print "2\t", $f, "\t", $c, "\n"; } else{ foreach my $l (keys %{$lex2{$f}{$c}}){ if (not defined($lex1{$f}{$c}{$l})){ print "3\t", $f, "\t", $c, "\t", $l, "\n"; } } } } } } sub lire_lex{ my ($fichier) = @_; my %lex; open(LEX, "<", $fichier) or die "impossible d'ouvrir ", $fichier; while (my $ligne = ){ chomp($ligne); my ($forme, $lemme, $cat) = split(/\t/, $ligne); $lex{$forme}{$cat}{$lemme} = 1; } close(LEX); return(\%lex); }