http://www.perlmonks.org?node_id=928483


in reply to Re: How can I replace a line (tag) in an XML file?
in thread How can I replace a line (tag) in an XML file?

You can even put the test on the content of id in the handler condition, and not in the sub:

twig_handlers => { 'student[string(id)="002"]' => sub { $_->first_child('gpa')->set_text('B'); } }

Note that if the id is in a variable, then quote delimiter collisions between Perl and XPath makes it a little more annoying. Luckily Perl allows us to use whatever character we want with qq{}:

twig_handlers => { qq{student[string(id)="$id"]} => sub { $_->first_child('gpa')->set_text('B'); } }