Beefy Boxes and Bandwidth Generously Provided by pair Networks
Your skill will accomplish
what the force of many cannot
 
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!!

Replies are listed 'Best First'.
Re^4: Search and replace
by Athanasius (Chancellor) 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?
[erix]: /hehehe
[marto]: LanX yesterday I found out about Gish gallop tactic
[marto]: "Eugenie Scott, executive director of the National Center for Science Education, dubbed this approach the Gish gallop, describing it as "where the creationist is allowed to run on for 45 minutes or an hour, spewing forth torrents of error that the
[marto]: evolutionist hasn't a prayer of refuting in the format of a debate." She also criticized Gish for failing to answer objections raised by his opponents"
[erix]: one would hope evolutionists haven't any prayers anyway

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (9)
As of 2017-07-28 15:40 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?
    I came, I saw, I ...
























    Results (431 votes). Check out past polls.