my $items = $farmdetails->{FarmRoleSet}{Item}; for my $item (@$items) { next unless $item->{RoleID} == $some_number; my $ExternalIP = $item->{ServerSet}{Item}{ExternalIP}; my $InstanceID = $item->{ServerSet}{Item}{PlatformProperties}{InstanceID}; } #### print Dumper($farmdetails->{FarmRoleSet}{Item}[0]); print Dumper($farmdetails->{FarmRoleSet}{Item}[0]{ServerSet}); # or better: my $items = $farmdetails->{FarmRoleSet}{Item}; for my $item (@$items) { print Dumper($item); print Dumper($item->{ServerSet}); }