use strict; use warnings; use XML::Twig; use Data::Dumper; my $xml = < file file.txt file1 file1.txt XML my $twig = XML::Twig->new ( twig_roots => {href => \&editHref,}, twig_print_outside_roots => 1, ); $twig->parse ($xml); $twig->flush; sub editHref { my ($twig, $href) = @_; my $text = $href->text (); $text =~ s/\.txt$/.xml/; $href->set_text ($text); $href->print (); } #### file file.xml file1 file1.xml file.xmlfile1.xml