useXML::Twig;
# we want anxpath like: //[@name="a"]//...//[@name="b"]/warn
my @names = qw(snoopdogg cpu cpu load1);
my $twig = XML::Twig->new;
$twig->parse(<<'XML');
<conf name="snoopdogg" serial="1" target="172.16.1.3">
<services>
<service name="cpu">
<plugins>
<plugin name="cpu" target="172.16.1.3" schedule="60">
<probes>
<probe name="load1">
<warn value="4" operator=">"/>
<crit value="10" operator=">"/>
</probe>
</probes>
</plugin></plugins></service></services>
</conf>
XML
my ($elt) = $twig->get_xpath(
(join "//" => "", map qq{[\@name="$_"]}, @names) . "/warn"
);
printf "value: %d\n", $elt->att('value');
__END__
value: 4