>>650
class String
  def indices(arg, &block)
    pos = 0
    setter = eval("proc{|m|$~=m}", block)
    while (pos = index(arg, pos)) do
      setter.call($~)
      yield pos
      pos += 1
    end
  end
end