structure de données, comment la parser ?
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) :
Code:
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'
}
]
}; |
pour l'instant j'ai testé un :
Code:
1 2 3 4 5 6
|
foreach my $mcheck (@{$data->{checks}}) {
foreach my $check (keys %{ $mcheck }) {
print "$check\n";
}
} |
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 ?
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 :
Code:
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> |
merci encore de vos lumières
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 !