#!/usr/bin/env perl use strict; use warnings; my $SOAPresult = \{ 'Thing' => [ { 'Animal' => { 'ThingName' => 'Dog', 'ThingID' => '123' } }, { 'Veg' => { 'ThingName' => 'Carrot', 'ThingID' => '42' } }, { 'Mineral' => { 'ThingName' => 'Talc', 'ThingID' => '007' } } ] }; my $SOAPresult_deref = $$SOAPresult; my @types = qw{Animal Veg Mineral}; for my $type (@types) { foreach my $e ( @{ $SOAPresult_deref->{Thing} } ) { next unless exists $e->{$type}; print "Wildcard = $type\n"; print "$e->{$type}{ThingName}\n"; } } #### $ pm_ref_var_access.pl Wildcard = Animal Dog Wildcard = Veg Carrot Wildcard = Mineral Talc