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