in reply to modifying a string in place

This substitution, s/([^^#])/$1$1/g, will do what you want. I'd expect it to be the fastest. It replaces any non-^ non-# character with itself twice.

Jeff japhy Pinyan, P.L., P.M., P.O.D, X.S.: Perl, regex, and perl hacker
How can we ever be the sold short or the cheated, we who for every service have long ago been overpaid? ~~ Meister Eckhart