$a = "2a+α-b2+bβ2"; $a =~ s#()(.*?)(<\/exp>)#$1.&expr($2).$3#egsi; print $a; sub expr { my($a) = @_; $a =~ s#([A-Z])#$1#gsi; $a =~ s#(\&)(.*?)(\;)#$1.&tmp($2).$3#egsi; sub tmp { my($tmp) = @_; $tmp =~ s#(|<\/it>)##gsi; return $tmp; } return $a; }