Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic
 
PerlMonks  

Re^3: Search and replace

by Bharath666 (Novice)
on Jan 31, 2013 at 15:59 UTC ( #1016345=note: print w/ replies, xml ) Need Help??


in reply to Re^2: Search and replace
in thread Search and replace

Also if you don't mind can you please explain me how exactly this command works

$found =~ s/ENV{\"(.*?)\"}/\$ENV(\"$1\")/g;

Thanks!!


Comment on Re^3: Search and replace
Download Code
Replies are listed 'Best First'.
Re^4: Search and replace
by Athanasius (Abbot) on Jan 31, 2013 at 16:23 UTC

    I thought I already had. :-) But OK, let’s add an /x modifier to the regex to make it easier to break apart:

    $found =~ s/ ENV{\" # match the characters: ENV{" (.*?) # followed by any characters -- this sequence +is the "value", and the parentheses capture it into the special varia +ble $1 \"} # followed by: "} / \$ENV( # and substitute a literal: $ENV(" $1 # followed by the captured "value" \") # followed by: ") /gx; # and repeat the search & replacement to the e +nd of $found

    Notes:

    • The double quotes are backslashed only because I was using a one-liner (and I’m on Windows). This is unnecessary in a .pl script. (But the $ must be backslashed to show that it is literal, not the special symbol for “match the end of a line” (in the search part) or a sigil denoting a scalar variable to be interpolated (in the replacement part). Update: Added the words from “(in the search part)” to the end of the sentence.)

    • The ? in the capture group (.*?) makes the match non-greedy. So the regex engine looks for the fewest number of characters occurring between ENV{" and "}. Without the ?, the match would be greedy, and on the string:

      ENV{"VCINSTALLDIR"}\ATLMFC\LIB\amd64;ENV{"LIBPATH"}

      it would match

      VCINSTALLDIR"}\ATLMFC\LIB\amd64;ENV{"LIBPATH
    • which is not what we want!

    Hope that helps,

    Athanasius <°(((><contra mundum Iustus alius egestas vitae, eros Piratica,

      Yeah!! I got it now :) Thanks a lot :)

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (16)
As of 2015-07-30 14:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (271 votes), past polls