bonjour,
je vous contacte car je n'arrive pas à faire un truc qui est à priori simple, j'ai du louper un épisode sur les hash de hashs de arrays de hashs.. & co..
Comment puis-je accéder au contenu de cette structure (provient data::dumper) :
pour l'instant j'ai testé un :
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 $VAR1 = { 'db_conn_ora' => [ { 'password' => 'xxxxxxxxx', 'criticity' => '1', 'description' => 'database connection', 'port' => '15210', 'username' => 'toto', 'host' => 'hostmachinchose' } ], 'ping' => [ { 'criticity' => '1', 'description' => 'Appserver Nodes availability', 'host' => 'hostici' } ], 'TCP_Port' => [ { 'criticity' => '1', 'description' => 'RMI Port', 'port' => '40598', 'host' => 'hostla' }, { 'criticity' => '1', 'description' => 'Oracle listener', 'port' => '1521', 'host' => 'hostoracleici' } ] };
et cela m'affiche bien le nom du check (ping, db_conn_ora ou TCP_Port), mais comment puis-je accéder aux sous valeurs ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 foreach my $mcheck (@{$data->{checks}}) { foreach my $check (keys %{ $mcheck }) { print "$check\n"; } }
globalement, j'aimerais faire une boucle, pour chaque type de check trouvé, chopper les valeurs du dessous.
si vous voulez plus d'infos et que cela vous aide, je lis un XML avec XML::Simple qui ressemble à ça :
merci encore de vos lumières
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
35 <?xml version="1.0" encoding="UTF-8"?> <morningcheck> <application>XXXX</application> <environment>UAT</environment> <checks> <ping criticity="1" description="Appserver Nodes availability" host="hostici" /> <TCP_Port criticity="1" description="RMI Port" host="hostmachinchose" port="40598" /> <TCP_Port criticity="1" description="Oracle listener " host="hostoracleici" port="1521" /> <db_conn_ora criticity="1" description="atabase connection" host="hostmachinchose" port="1521" username="userici" password="xxxxxxxxx" /> </checks> </morningcheck>
en gros j'aimerais boucler sur les checks, en disant "pour chaque check trouvé (il peut y avoir plusieurs checks de chaque type, exemple plusieurs "ping" ou "tcp_port", ) alors fait telle et telle action avec les valeurs que tu trouves dedans, mais je n'arrive pas à récupérer les valeurs.
j'ai du mal avec ce concept de hash qui contient de l'array qui contient du hash etc..
merci !
Partager