I'm trying to use the block form of gsub in order to do substitution
involving an interpolation stored within a variable, but I can't
figure out how to get it to work. Here's a simplified case of what
I'm trying to do:
$fromre = Regexp.compile(ARGV[0])
$repl = ARGV[1]
$replcount = 0
string = "... something arbitrary ..."
string.gsub!($fromre) {
>x>
$replcount += 1
$repl
}
As you can see, the regexp comes in on the command line, as well as
the replacement. I want to do this substution using the block form so
I can count the number of replacements that were made.
This works as long as $repl doesn't contain any references to matched
patterns. However, if this program is called 'myprog' and I do the
following, the replacement of $1 with the indicated subexpression
doesn't occur:
myprog 'abc(\S+)def' 'NEW-$1-MATCH'
In other words, if the string being substituted is this, "abcFOOBARdef",
the result is not "NEW-FOOBAR-MATCH" as I would like it to be, but rather,
"NEW-$1-MATCH".
It's clear why this doesn't work, but I can't figure out what construct
to use within the gsub block or on the command line to make sure that it
_does_ work.
I also tried this, and not surprisingly, it didn't work, either:
myprog 'abc(\S+)def' 'NEW-#{$1}-MATCH'
Can anyone suggest how I can accomplish this?
Thanks in advance.
···
--
Lloyd Zusman
ljz@asfast.com
God bless you.