You don't want to use a character class (square brackets).
[^(http://)] tells perl to look for any character not listed
inside the square brackets after the negation (^), so this
might as well read [^)(/:hpt].
What you're trying to do is a zero width negative look-behind
assertion.
s#(?<!http://)www\.#
http://www.#gi should do the trick.
The "(?<!...)" tells the regex engine to only match the following
pattern if it is not preceded by the pattern in the look-behind,
without capturing anything.
"perldoc perlre" has good explanations for character classes
and look-around assertions.
-Chris