use warnings; use strict; use XML::Twig; my $str = ' aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa aaaaaa bbbbbb aaaaaa aaaaaa aaaaaa aaaaaa '; my $t = XML::Twig->new( twig_handlers => { Dataentry => \&dentry } ); $t->parse($str); sub dentry { my ($t, $ent) = @_; my $found = 0; for my $data ($ent->children('Data')) { if ($data->text() eq 'bbbbbb') { $found = 1; next; } } if ($found) { # do something } }