http://www.perlmonks.org?node_id=996159


in reply to Parsing SOAP::Lite results

and I get a 'Not an ARRAY reference' error. What am I doing wrong?

Well, I get a Not a HASH reference error, since $getToysResults->{Toys}->{Toy} is of type ARRAY:

$VAR1 = { 'Toys' => bless( { 'Toy' => [ <----- here ... ] }, 'ArrayOfToy' ) };

You need two loops.

for my $toy ( @{$getToysResults->{Toys}->{Toy}} ) { for my $l ( @{$toy->{ToyLocations}->{ToyLocation}} ) { print "$l->{locationName}\n" } }

Replies are listed 'Best First'.
Re^2: Parsing SOAP::Lite results
by Roboz (Novice) on Sep 28, 2012 at 10:52 UTC

    I got the 'Not an ARRAY reference' error when I tried the second loop, as in your suggestion. That was the part that was confusing me.

      shmem's code should not have produced that error with the data you posted. My code (Re: Parsing SOAP::Lite results) should not have produced the same error either. I'm now reasonably certain that the data you've posted is not the data you're operating on. See my earlier response (Re^3: Parsing SOAP::Lite results) for some suggestions.

      -- Ken