in reply to regexp help -- word boundaries

You want $a to be preceded by either a space or nothing at all (beginning of line), and followed by either a space or nothing at all (end of line). Preceded by a space or nothing is the same as not preceded by something that's not a space. Translated into regex, that's (?<!\S). Similarly, followed by a space or nothing is the same as not followed by something that's not a space. That is (?!\S). Thus: $n =~ s/(?<!\S)$a(?!\S)/$b/ig will work in the cases you have requested. You might be interested in using \b instead (for word boundaries), as it will work in cases where $a is surrounded by, for instance, punctuation, but it will not work in all cases if $a begins or ends with non-alphanumberscore characters.

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