中井と申します。MLへの投稿は初めてですので、失礼がありましたらお知らせ
ください。

で、本題です。

rubyは最近始めたばかりですが、多次元配列の扱いでちょっとわからないでい
ます。
単純には空の2次元配列を作り、そこに .pushで要素を入れようとするのです
が、どうもうまく更新されません。

emacsのなかからrun-rubyで走らせた結果を添付します。

-ここから-------------------------------------------------------------------

irb(main):001:0> $array=Array.new(20,[])
[[], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], [], []]
irb(main):002:0> $array[10].push(3)
[3]
irb(main):003:0> $array
[[3], [3], [3], [3], [3], [3], [3], [3], [3], [3], [3], [3], [3], [3],
[3], [3], [3], [3], [3], [3]]

-ここまで-------------------------------------------------------------------

$array[10].push(3) で期待したのは、
[[], [], [], [], [], [], [], [], [], [], [3], [], [], [], [], [], [], [], [], []]
だったのですが、全部の配列が更新されてしまいます。これってこちらの解釈
がおかしいのでしょうか。
同様のスクリプトを書いて確かめても同様な結果になりました。

アドバイスいただければと思います。よろしくお願いします。

ちなみに使っているversionは以下の通りです。
$ ruby -v
ruby 1.4.4 (2000-04-14) [i386-freebsd3.4]
$ head /usr/local/share/emacs/site-lisp/ruby/ruby-mode.el
;;;
;;;  ruby-mode.el -
;;;
;;;  $Author: matz $
;;;  $Date: 2000/01/24 03:46:14 $
;;;  created at: Fri Feb  4 14:49:13 JST 1994
;;;

(defconst ruby-mode-revision "$Revision: 1.5.2.3 $")

$ head /usr/local/share/emacs/site-lisp/ruby/inf-ruby.el 
;;; -*-Emacs-Lisp-*-
;;;
;;;  $Id: inf-ruby.el,v 1.2.2.1 1999/12/01 09:24:48 matz Exp $
;;;  $Author: matz $
;;;  $Date: 1999/12/01 09:24:48 $
;;;
;;; Inferior Ruby Mode - ruby process in a buffer.
;;;                      adapted from cmuscheme.el
;;;
;;; Usage:

//    TOSHIO Nakai                    --- toshi / ss.iij4u.or.jp ---  //
//    Like a bridge over troubled water, I will lay me down.        //
//    Like a bridge over troubled water, I will ease your mind.     //