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.