Bonjour,
je cherche à comparer 2 tableaux de hash afin de connaître les éléments présents dans 1 seul des tableaux, les stocker dans un hash et connaître l'action à faire sur ces éléments.
Mes 2 tableaux de hash ont la même structure, la seule chose que je dois vérifier, c'est la présence d'une valeur de clé précise : hostname.
Un extrait des print Dumper des 2 tableaux :
@data_j :
@data_w :
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 $VAR1 = [ { 'date_maj' => '2016/05/18', 'etat' => 'Operationnel', 'env' => 'HPROD', 'environnement' => 'DEVELOPPEMENT', 'upm' => 'UPM_XXXXXX', 'hostname' => 'SRV1', 'os' => 'UNX' }, { 'date_maj' => '2016/05/18', 'etat' => 'Operationnel', 'env' => 'HPROD', 'environnement' => 'DEVELOPPEMENT', 'upm' => 'UPM_XXXXXX', 'hostname' => 'SRV2', 'os' => 'UNX' }, (...) ]
J'aimerais arriver à produire un tableau de hash qui aurait cette tête :
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 $VAR1 = [ { 'date_maj' => '2016/05/18', 'etat' => 'Operationnel', 'env' => 'HPROD', 'environnement' => 'DEVELOPPEMENT', 'upm' => 'UPM_XXXXXX', 'hostname' => 'SRV2', 'os' => 'UNX' }, { 'date_maj' => '2016/05/18', 'etat' => 'Operationnel', 'env' => 'HPROD', 'environnement' => 'DEVELOPPEMENT', 'upm' => 'UPM_XXXXXX', 'hostname' => 'SRV5', 'os' => 'UNX' }, (...) ]
et donc au final avec mon cas :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 [ HOSTNAME => { env =>, os =>, action => } ]
Parce qu'au final, je dois construire un fichier plat de la sorte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 [ 'SRV1' => { env => 'HPROD', os => 'UNX' action => 'DEL' }, 'SRV5' => { env => 'HPROD', os => 'UNX' action => 'ADD' } ]
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 UNX;SRV1;HPROD;DEL UNX;SRV5;HPROD;ADD
J'ai commencé à écrire ceci mais je butte sur la récupération des valeurs des hash. Pour le moment j'ai juste cherché à créer mon troisième hash mais c'est la cata, j'ai vraiment du mal ...
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 sub prepare_getlog() { my ($this,$data) = @_; my @data_j = $this->{data}; print Dumper (@data_j); $this->{file} = $this->{histo_dir}.strftime("extraction_assetdb.%y%m%d.csv", localtime(time() - 604800)); $this->parse($this->{file}); my @data_w = $this->{data}; print Dumper (@data_w); print "Difference entre les 2 hash\n"; foreach my $h (@data_w) { my %info_getlog; foreach my $h2 (@{$h}) { my $cle = $h2->{hostname}; $info_getlog{os} = $h2->{os}; $info_getlog{env} = $h2->{env}; $info_getlog{action} = 'DEL'; $this->{getlog}->{$cle} = \%info_getlog; } } }
Je ne vous cache pas qu'un petit coup de pouce serait la bienvenue, à minima sur la méthode pour comparer 2 valeurs de clé de 2 hash
Merci à vous,
CH
Partager