my %map = ( typeA => sub { $_[0]->{key1}[3]{key2} }, typeB => sub { $_[0]->{key3} }, typeC => sub { $_[0]->[1]{key4} }, # ... ); #### my %map = ( typeA => "{key1}[3]{key2}", typeB => "{key3}", typeC => "[1]{key4}", # ... ); for my $elem (@LoANY) { my $xpath = $map{$elem->{type}}; my $lol = $elem->{data}; print eval "\$lol->$xpath", "\n"; } #### Value1 Value2 Value3