use XML::Simple; my $monk = XMLin('./monk.xml', keyattr => {val => 'val1'}, forcearray => ['val'] ); if($monk->{vals}->{val}->{FOO}) { print $monk->{say}, "\n"; } #### use XML::XPath; use XML::XPath::XMLParser; my $xp = XML::XPath->new(filename => './monk.xml'); my $nodeset = $xp->find('/monk[./vals/val[@val1 = "FOO"]]'); foreach my $node ($nodeset->get_nodelist) { my $say = $xp->findvalue('./say', $node); print "$say\n"; }