J'ai besoin de votre aide pour faire un algo efficace pour comparer deux hash et supprimé du second les informations ce trouvant déjà éventuellement dans le premier :

j'ai essayé de résoudre le problème comme ceci mais sa ne donne rien


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
#!/usr/bin/perl -w
 
my $i = {
  maison => [1,4],
  chien => [2,7]
};
 
 
my $n = {
  maison => [1,6],
  chien => [2,7],
  nouveau => [1,1]
};
 
my $l;
 
 
#%$l = keys %{ %$i, %$n };
 
foreach my $key (keys %$i) {
  foreach my $k (keys %$n) {
    if ( $i->{$key} =~ /$n->{$k}/i and $i->{$key}[0] eq $n->{$k}[0] and $i->{$key}[1] eq $i->{$k}[1] ) {
        delete $n->{$k};
    }
  }
}
 
 
foreach my $m (keys %$n) {
 print "$m :: $n->{$m}[0] :: $n->{$m}[1]\n";
}
----------------
Voila mes hash de teste, je veut supprimer de $nouveau les informations ce trouvant déjà dans $ancien, il faut donc comparer les clés et les valeurs mais je ne sais pas comment faire tout ce que j'ai essayé ne fonctionne pas :s

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
my $ancien = {
  maison => [1,7],
  chien  => [15,50]
};
 
 
my $nouveau = {
  lunette => [4,8],
  paris   => [12,5]
  chien   => [15,50]
};
après le passage dans l'algo il faudrait obtenir


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
my $nouveau = {
  lunette => [4,8],
  paris   => [12,5]
};

merci!