use strict; use warnings; while ( my $string = ) { $string =~ s/([A-Z]+)<(.+?)>/<\L$1\E>$2<\/\L$1\E>/g; print $string; } __DATA__ ABBR ACRONYM B BIG CITE CODE DFN EM I KBD SAMP SMALL SPAN STRONG SUB SUP TT VAR This is a B which I want to I almost like EM. CODE