use XML::Rules; my $parser = XML::Rules->new( stripspaces => 3, rules => [ _default => 'content', address => 'no content array', addresses => 'pass no content', ] ); my $data = $parser->parse($XML); use Data::Dumper; print Dumper($data->{address}); #### my $parser = XML::Rules->new( stripspaces => 3, rules => [ _default => 'content', address => sub {print "$_[1]->{name} for $_[1]->{city}\n"; return}, addresses => '', ] ); $parser->parse($XML);