use strict; use warnings; use XML::LibXML; use Data::Dumper; my $xml = do { local $/; }; my $dom = XML::LibXML->load_xml(string => $xml); my %vendors = map { $_->getAttribute('vendorUniqueKey') => $_->getAttribute('name') } @{$dom->getElementsByTagName('Vendor')}; print Dumper(\%vendors); __DATA__ #### $VAR1 = { 'BETASYS' => 'Beta Systems Software', 'BMC' => 'BMC Software', 'ALLENGRP' => 'Allen Systems', 'AONIX' => 'Aonix North America' };