use XML::Rules; my $parser = XML::Rules->new( style => 'filter', rules => { article => sub { my ($tag,$attr) = @_; $attr->{_content} =~ s/EM/E/g; return $tag => $attr; } } ); $parser->filterfile( 'a.xml', 'b.xml');