use strict; use warnings; undef $/; my $alt = '(?:sur|given)name'; my $content = ; $content =~ s#([^<]*)(<$alt>.*)#$1."".&indivauth($2)."\n"#egi; sub indivauth { my ($inline) = @_; $inline =~s#(<$alt>(?:(?!$alt|).)*?)#$1#gsi; return "$inline"; } print $content; __DATA__ Coff, D.,, Coff, D., D.,, Coff, D.,, Coff #### Coff, D.,, Coff, D., D.,, Coff, D.,, Coff