use strict; use warnings; use XML::Rules; my $xml = < file file.txt file1 file1.txt file1 file1.txt XML my $parser = XML::Rules->new ( style => 'filter', rules => { _default => 'raw', href => sub { my ($tag, $attr, $context) = @_; $attr->{_content} =~ s/\.txt$/.xml/i if $context->[-1] eq 'test'; return $tag => $attr; } } ); $parser->filter($xml);