use XML::Rules; XML::Rules->new( stripspaces => 7, rules => { lease => sub {return 'lease' => $_[1]->{true}}, extra_device => sub {return 'extra_device' => $_[1]->{value}}, computer => sub { if ($_[1]->{extra_device}) { print "computer id: $_[1]->{id} type: $_[1]->{type} os +: $_[1]->{os} lease:$_[1]->{lease} extra_device=$_[1]->{extra_device} +\n"; } else { print "computer id: $_[1]->{id} type: $_[1]->{type} os +: $_[1]->{os} lease:$_[1]->{lease}\n"; } return; } } )->parse(\*DATA); __DATA__ <config> <computer id="one" type="mac" os="XP" > <lease true="yes" /> <extra_device value="scanner"/> </computer> <computer id="two" type="pc" os="NT" > <lease true="no" /> </computer> </config>
Sometimes it's better to reach for a different hammer. Even if you already have a hammer in your hand.
In reply to Re: xml::twig gathering all element and att and its value question
by Jenda
in thread xml::twig gathering all element and att and its value question
by convenientstore
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |