J'utilise XML::Simple
en Perl pour analyser dans un fichier XML et je suis coincé sur la façon de construire une boucle pour parcourir tous les éléments possibles de un tableau dans le hachage.besoin de construire une foreach à partir d'un tableau de hachage d'éléments variables en Perl
Voici comment imprimer l'élément 0e du tableau:
print $book_info->{BookList}->{BookData}->{Prices}->{Price}[0]->{is_new};
Ma terminologie pourrait être lorsque vous utilisez les mots par rapport à hacher tableau, mais je suis en train de boucler à travers tous les éléments à l'intérieur {Price}[$ref]
J'ai essayé:
my @refs = $book_info->{BookList}->{BookData}->{Prices}->{Price};
foreach(@refs)
{
print $book_info->{BookList}->{BookData}->{Prices}->{Price}[$_]->{store_id};
print "\n";
}
et
foreach my $key (keys (%{$book_info->{BookList}->{BookData}->{Prices}->{Price}}))
{
print $key."\n";
}
Cette instruction d'impression suivante retourne une valeur de "ARRAY(0x159a57c)"
print [$book_info->{BookList}->{BookData}->{Prices}->{Price}];
Cela fonctionne pour le foreach, mais je ne peux pas accéder correctement les éléments:
foreach (@{$book_info->{BookList}->{BookData}->{Prices}->{Price}})
{
print $book_info->{BookList}->{BookData}->{Prices}->{Price}[$_]; #this line is wrong
}
Des suggestions? Il y a plusieurs éléments {Price}
dans l'élément {Prices}
, et chaque élément {Price}
a [x]
attributs dans le XML.
Je ne l'ai pas utilisé XML :: Simple, mais je présume que 'book_info $ -> {Booklist} -> {BookData} -> {prix} -> {Prix}' est référence à un tableau, vous aurez donc besoin pour le déréférencer comme ceci '@ ($ book_info -> {BookList} -> {BookData} -> {Prices} -> {Price})'. Incluez également la sortie que vous obtenez maintenant de votre script. –
j'ai essayé 'foreach (@ (book_info $ -> {Booklist} -> {BookData} -> {Prix} -> {Prix}))' et 'a Scalar trouvé où l'opérateur prévu .....' – CheeseConQueso
Prenez une regardez [perldoc perlreftut] (http://perldoc.perl.org/perlreftut.html) et [perldoc perldsc] (http://perldoc.perl.org/perldsc.html). – Ether