$input=':2aF+-b&2z4676
'; $input =~ s/()(.*?)(<\/exp>)/$1.&exp($2).$3/egsi; print $input; sub exp { my ($a)=@_; $a =~ s/[a-z]+/$&<\/it>/gsi; $a =~ s/(&)(.*?)(;)/$1.&($2).$3/egsi; sub amp { my ($m)=@_; $m =~ s/<\/?it>//gsi; return($m); } return($a); } output: :2aF+-b&2z4676