s/(.)(\.+)/$1 x (1+length $2)/seg; #### $ perl -wle' $_ = "III...MMMMMOOOO....MMMIIIII"; print; s/(.)(\.+)/$1 x (1+length $2)/seg; print; ' III...MMMMMOOOO....MMMIIIII IIIIIIMMMMMOOOOOOOOMMMIIIII #### $ perl -wle' $_ = "III...MMMMMOOOO....MMMIIIII"; print; 1 while s/(.)(\.)/$1$1/sg; print; ' III...MMMMMOOOO....MMMIIIII IIIIIIMMMMMOOOOOOOOMMMIIIII