[^\s\w] means neither spaces nor words, or, everything but spaces and words, where
[\S\W] means non-spaces AND non-words, and since a space is a non-word, the meaning is similar to "non-spaces and spaces".
However, ^\s and \S should be the same, so...
would do the same thing as...$phrase =~ s/[^\s*\w*]//g;
$phrase =~ s/[\S]|[\W]|[^*]//g;
Update: No, it wouldn't. :: smacks self in head ::