use strict; use XML::Rules; use Data::Dumper; my $parser = XML::Rules->new( rules => { 'excerpt' => 'pass no content', 'Address,Fax,Telefon,contactinfo,products' => 'no content', 'Boss,Building,Name,Ort,Street,URL,art_code,code,directcall,email,quantity,quantity_small,telnumber,unitnumber,zip' => 'content', 'article' => sub { if (exists $_[1]->{quantity_small}) { return #'%article' =>{ $_[1]->{art_code} => 'few' # }; } else { return #'%article' => { $_[1]->{art_code} => $_[1]->{quantity} #}; } }, 'unit' => 'no content by Name', } ); my $data = $parser->parse(\*DATA); print Dumper($data); __DATA__ 1 ...