my $xml = 'ApplicationList.xml'; my $xp = XML::XPath->new(filename => $xml); my $appxpath = $xp->findnodes("//application_list/application/"); my %appid = (); my %appname = (); foreach my $appnodeset ($appxpath->get_nodelist) { my $id = $xp->find('./@id',$appnodeset); my $name = $xp->find('./@name',$appnodeset); #$name = $_->string_value; s/^\s+|\s+$//g for $id,$name; $appid{$id} = {$name->string_value}; } print Dumper \%appid; #### $VAR1 = { '1103' => { 'cccc' => undef }, '2667' => { 'bbbb' => undef }, '957' => { 'aaaa' => undef }, '1503' => { 'dddd' => undef } }; #### $VAR1 = { '1103' => 'cccc', '2667' => 'bbbb', '957' => 'aaaa', '1503' => 'dddd' };