Wrapped String#gsub

こんにちは、朴 芝印です。

次のように gsubをラッピンッグして
実行すると、ちょっと意外な結果がでますが、ごれは正しいでしょうか。

勘違いだったらすみません。

$ cat test2.rb
class String
def wrap_gsub(*a, &b)
self.gsub(*a, &b)
puts “in wrapper ? #{$&}”
end
end

puts “wrapper”
“abc”.wrap_gsub(/([abc]+)/n) {|x| p $&}
puts “and out of wrapper - #{$&}”
puts “=======”
puts “original”
“abc”.gsub(/([abc]+)/n) {|x| p $&}

結果です。1.8/1.9 同じです。

$ ruby test2.rb
wrapper
nil
in wrapper ? abc
and out of wrapper -

original
“abc”
$ ruby --version
ruby 1.9.0 (2008-01-22 revision 0) [i686-linux]
mithrandir@losrorien ~/Development/ruby-1.8.6 $ ruby18 test2.rb
wrapper
nil
in wrapper ? abc
and out of wrapper -

original
“abc”
$ ruby18 --version
ruby 1.8.6 (2007-12-03 patchlevel 113) [i686-linux]