#! /usr/bin/perl use warnings; use strict; use XML::XPath; my $appxml = 'ApplicationList.xml'; my $appxp = XML::XPath->new(filename => $appxml); my $xp = $appxp->findnodes('//application_list/application/'); my %appid; my @apprecords; foreach my $appnodeset ($xp->get_nodelist) { my $id = $appnodeset->find('@id')->string_value; $id =~ s/^\s+|\s+$//g; foreach my $spltname ($appxp->findnodes('./contacts/technical',$appnodeset)) { my $name = join ",", map $_->string_value, $spltname->findnodes('.//name1'); # add this as suggested by choroba $appid{$id} = $name; print $name; } }