use strict; use XML::Rules; use Data::Dumper; my $parser = XML::Rules->new( stripspaces => 7, rules => { 'known-action,name' => 'content', 'target' => sub { return '@partners' => $_[1]->{partner}, '@actions' => $_[1]->{'known-action'}; }, 'targets' => 'pass no content', 'drug' => 'pass no content' } ); my $data = $parser->parse(\*DATA); #print Dumper($data); print "Name: $data->{name}\nType: $data->{type}\n"; print "Partners: ", join(', ', @{$data->{partners}}), "\n"; print "Actions: ", join(', ', @{$data->{actions}}), "\n"; __DATA__ Goserelin yes yes yes