須藤です.

In <200608281143.k7SBhS5L038962 / pis.elm.toba-cmt.ac.jp>
  "[ruby-list:42758] eval substirution with variable" on Mon, 28 Aug 2006 20:43:47 +0900,
  KIRIYAMA Kazuhiko <kiri / pis.elm.toba-cmt.ac.jp> wrote:

> ハッシュを要素とするネストした配列で,任意のネストした要素に
> 配列を代入したいのですが,eval を使って代入する際に配列自体
> をリテラルにするところで固まってしまいました.以下に例を示し
> ます.

> s = ""
> region.each {|j| s += "[#{j}][:b]"}
> eval "a#{s} = #{b}"

first, *rest = region
receiver = rest.inject(a.send(:[], first)) do |res, j|
  res.send(:[], :b).send(:[], j)
end
receiver.send(:[]=, :b, b)

これでどうでしょう.