For a different variation on the same theme, try
$string =~ s/(?<!\\)'/\\'/g;
Though this raises the question "what if the string contains a backslash followed by a single quote?" Which makes the regex slightly more complicated, and leads back to he conclusion that quotemeta might not be such a bad idea, after all...
Update: while I'm writing silly regexes...
$string =~ s/(?<!\\)(?=')/\\/g;
<duck>
If God had meant us to fly, he would *never* have given us the railroads. --Michael Flanders |