#!/usr/bin/perl -w use strict; use XML::XPath; my $file = 'available_batchnyyn.xml'; my $xp = XML::XPath->new(filename=>$file); # /AvailableBatch/Available is faster than //Available my @available = $xp->findnodes('/AvailableBatch/Available'); foreach my $available (@available) { my $part= $available->findvalue( './Part[1]'); # the [1] is not really needed my $qty= $available->findvalue( './Qty[1]'); $part=~ s{\s+$}{}; # you might need to trim all values print "part $part - qty: $qty\n"; }