use strict; use warnings; use XML::Simple; use Data::Dumper; my $ref = XMLin(\*DATA, forcearray=>1, keyattr=>{wrapper=>"name"}); # feel free to uncomment these Dumps #print Dumper $ref; for (@{$ref->{wrapper}{'testName 1.0.3'}{parm}}) { #print Dumper $_; while(my ($k,$v) = each %$_) { print "$k => $v\n"; } } __DATA__ ... rest of XML ...