Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

(tye)Re: Quickie Question: search and replace problem

by tye (Sage)
on Apr 19, 2001 at 00:58 UTC ( [id://73664]=note: print w/replies, xml ) Need Help??


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.

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://73664]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others rifling through the Monastery: (3)
As of 2024-04-24 05:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found