in reply to Re: Quickie Question: search and replace problem
in thread Quickie Question: search and replace problem

I've created a monster! ;)

Actually, you can eventually quote them enough to get the same effect as \Q and \E. I personally like the /\Q$string\E/ construct and recommend it over the other methods I'm about to mention.

But you can also do any of these:

$attempt= "get_stuff\\(\\)"; $attempt= "\Qget_stuff()\E"; $attempt= quotemeta( "get_stuff()" ); $attempt= qr/get_stuff\(\)/; $attempt= 'get_stuff\(\)';
but I still find the original suggestion makes the most sense to me. In a regex (that means only the first half of s///), $x means interpret the contents of $x as a regex while \Q$x\E means interpret the contents of $x as a string.

Update: Thanks, indigo, I missed that!

        - tye (but my friends call me "Tye")

Replies are listed 'Best First'.
Re: (tye)Re: Quickie Question: search and replace problem
by indigo (Scribe) on Apr 19, 2001 at 01:13 UTC
    All these do the escaping properly. But the code went like this:
    $data = $attempt; $data =~ s/$attempt/$newstr/;
    The problem isn't simply bad escaping. Either $attempt gets munged, and the match fails, or you have to premunge $data to get $attempt right, and the match still fails.

    So /\Q$attempt\E/ really is the best way to go.