J'ai deux hash de hash que j'aimerais fusionner.
J'aimerais obtenir un hash unique
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
32
33
34 my %hash1 = ( 'orgaA' => { 'valA' => 1, 'valB' => 0, 'valC' => 1, }, 'orgaB' => { 'valA' => 0, 'valD' => 1, 'valE' => 1, }, 'orgaC' => { 'valD' => 0, 'valE' => 1, 'valG' => 0, } ); my %hash2 = ( 'orgaA' => { 'valR' => 1, 'valB' => 0, 'valT' => 1, }, 'orgaB' => { 'valI' => 1, 'valE' => 1, }, 'orgaD' => { 'valD' => 1, 'valE' => 1, } );
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 my %hash = ( 'orgaA' => { 'valA' => 1, 'valB' => 0, 'valC' => 1, 'valR' => 1, 'valT' => 1, }, 'orgaB' => { 'valA' => 0, 'valD' => 1, 'valE' => 1, 'valI' => 1, }, 'orgaC' => { 'valD' => 0, 'valE' => 1, 'valG' => 0, }, 'orgaD' => { 'valD' => 1, 'valE' => 1, }, )
J'ai écrit un programme faisant ce que je veux, j'affiche à l'écran mon hash unique et je peux ensuite le copier coller dans mon programme.
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 # key list of primary keys my @prim_keys = keys %hash1; push @prim_keys, keys %hash2; my %prim_keys_list; map{$prim_keys_list{$_} = 1;}@prim_keys; print 'my %hash = ('."\n"; foreach my $key1 (sort keys %prim_keys_list){ print "\t".q{'}.$key1.q{'}."\t=>\t{\n"; # key list of secondary keys my %sec_keys_list; if (exists $hash1{$key1}){ foreach my $k (keys %{$hash1{$key1}}){ $sec_keys_list{$k} = ${$hash1{$key1}}{$k}; } } if (exists $hash2{$key1}){ foreach my $k (keys %{$hash2{$key1}}){ $sec_keys_list{$k} = ${$hash2{$key1}}{$k}; } } foreach my $key2 (sort keys %sec_keys_list){ print "\t\t\t\t".q{'}.$key2.q{'}."\t=>\t$sec_keys_list{$key2},\n"; } print "\t\t\t},\n"; } print ")\n";
J'aimerais savoir si certains modules permettant cela n'existeraient pas.
J'aimerais également savoir quelle est la meilleure façon de procéder sachant que :
mon première tableau possède 20 clés 'primaires' (orga) et 309 clés 'secondaires' (val).
mon second possède 24 clés 'primaires' et 459 clés 'secondaires'.
Quand on a cette ordre de grandeur de données, comment vaut-il mieux les stocker? Créer directement le hash dans le script est-il une bonne méthode où vaut-il mieux stocker les données dans un fichier que le programme va récupérer afin de créer lui même le hash. A partir de combien de clés est-il préférable de passer par un fichier?
Merci pour vos conseils,
Partager