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
après le passage dans l'algo il faudrait obtenir
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] };
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 my $nouveau = { lunette => [4,8], paris => [12,5] };
merci!
Partager