前田です。

In message "[ruby-list:7628] Re: How to write Perl's `@a[@b] = @c' in ruby"
Shin-ichiro Hara <sinara / blade.nagaokaut.ac.jp> wrote:

|Enumerable のメソッドの多くは「with_index 化」できるなあ、と考えて
|いて勘違いしてしまいました。一々メソッドを作らずにする with_index
|化するいいやり方って無いかしら。

class Object
  def with_index(iterator, *args)
    i = 0
    send(iterator, *args) do |*x|
      result = yield(i, *x)
      i = i.next
      result
    end
  end
end

とすれば、

p "foo bar baz".with_index(:gsub, /[a-z]+/) { |i, s| i.to_s }
#=> "0 1 2"

などとできますね。

-- 
前田 修吾