J'essaie de stocker la réponse d'un appel SOAP Perl (v5.12.4) (requête SQL) comme un hachage pour un traitement ultérieur tout en conservant la structure des données. Les colonnes varieront donc j'aimerais pouvoir construire les clés de colonne dynamiquement. Voici un exemple de réponse:Stockage de la réponse SOAP comme hash
$VAR1 = {
'row' => [
#0
{
'column1' => '',
'column2' => 'f',
'column3' => '0',
'column4' => '',
'column5' => 'f',
'column6' => '0',
'column7' => 'f',
},
]
};
Je suis intéressé par les noms et les valeurs des colonnes. Je l'ai fait quelques tentatives comiques() à la manipulation de ce, comme:
unless ($res->fault) {
$Data::Dumper::Indent = 3;
my (%reply) = $res->paramsall();
foreach my $keys (keys %reply) {
print "$keys\n";
}
}
Cela devient une « référence trouvée où la liste même taille attendue à la ligne de script.pl ... ». Tout point dans la bonne direction est très apprécié.
Merci
Salut John, Ça a bien fonctionné, merci! J'ai quelques problèmes en essayant d'accéder à la clé/valeur dans le hachage. J'utilise: foreach mon $ key1 (clés% réponse) { \t foreach mon $ key2 (clés% {$ réponse {$ key1}}) { impriment "$ key2:". $ reply {$ key2} -> {$ key2}. "\ n"; \t}} Mais je reçois « Pas une référence HASH à la ligne de script.pl .... » Tous les conseils sur l'analyse syntaxique du hachage? Merci! –
Eh bien, j'ai trouvé un moyen d'accéder à l'info mais je ne pense pas que ce soit la solution la plus élégante .... mais cela fonctionne: my $ count = 0; \t jusqu'à ($ réponse {'row'} [$ count] eq undef) { mon% newHash =% {$ réponse {'row'} [$ count]}; while (mon ($ key, $ value) = chaque% newHash) { \t \t print "$ clé = $ valeur \ n"; } $ nombre ++; Si quelqu'un a une suggestion pour affiner ma solution, je suis tout ouïe. Merci! –
a répondu dans la réponse originale .. – John