use Modern::Perl; use Mojo::DOM; use Data::Dumper; my $xml = <<'END'; Aston Clinton Andy Barth 1 GB ANDY BARTH Aylesbury Daniele Dall'Acqua 2 GB DANIELE DALL'ACQUA Calne Nigel Drew 3 GB NIGEL DREW END my $dom = Mojo::DOM->new($xml); my %record = getInventorNum($dom, 1); print Dumper \%record; sub getInventorNum { my ( $dom, $num ) = @_; my %hash; $dom->find('number')->each( sub { if ( $_->text == $num ) { for my $element ( @{ $_->parent->children } ) { next if $element->type eq 'number'; $hash{ $element->type } = $element->text; } } } ); return %hash; }