String.gsub での$

しらなかったんだけど、String.gsub の第二引数で $<数字> は使えない。
理由は gsub の時点ではまだマッチまではしていないかららしい。

$<数字> を使いたい場合はブロックを使えばよいらしい。

str = "abcdefg"
str.gsub(/([cde]+)/) { $1.upcase } 
# => abCDEfg

ruby-list:44194 - 式展開で正規表現を使う場合、うまく展開されない