use strict; use warnings; use XML::Twig; my $twig = XML::Twig->new( twig_handlers => { 'img[@alt="Smiley"]' => sub { XML::Twig::Elt->new('#PCDATA',':)')->replace($_) }, 'img[@alt="Wink"]' => sub { XML::Twig::Elt->new('#PCDATA',';)')->replace($_) }, }, pretty_print => 'indented', ); $twig->parse(\*DATA); $twig->flush; __DATA__ Wink Smiley