in reply to skip over an escaped single quote

As a matter of technique, you should print the value of $line before you change it to make sure it is what you think it is. In your second test, you need to escape the \ after Wayne. The following code should get you started:

$line = sprintf qq{Test #1 'Show me Waynes world','Jennys Basketball s +hoes'\n}; print $line; # <- added this line $line =~ s/(')[^'\\]*(?:\\.[^'\\]*)*(')/$1SSS$2/g; print $line; $line = sprintf qq{Test #2 'Show me Wayne\\'s world','Jenny\\'s Basket +ball shoes'\n}; # <- changed this line (two extra \ added) print $line; # <- added this line $line =~ s/(')[^'\\]*(?:\\.[^'\\]*)*(')/$1SSS$2/g; print $line;
How to match quoted strings is discussed in many places, notably in Friedl's Mastering Regular Expressions O'Reilly book (the regex I used is derived from one in Friedl's book).

Update: Matching quoted strings is also discussed in perlre (in the "Quantifiers" section), where they suggest /"(?:[^"\\]++|\\.)*+"/ (perl 5.10 and above); see the discussion in perlre for more details. See also this stack overflow question and $RE{quoted} in Regexp::Common.