はじめまして。伊波と申します。
1999年ごろにRubyを知り、以後「楽しいプログラミング」を
満喫させていただいております。

さて、実は、手元の

% uname -a
FreeBSD bonnet 4.2-STABLE FreeBSD 4.2-STABLE #0: Tue May 29 02:58:38 JST 2001
  root@bonnet:/usr/src/sys/compile/BONNET  i386
% ruby -v
ruby 1.6.4 (2001-06-04) [i386-freebsd4.3]

という環境下で、

        文字列をhash keyとする値を持つ、ハッシュを生成後、
        $= の値を変更すると、
        以後、その要素へアクセスできなくなる(nilが返る)

という状況を観測しており、これはバグなのか、
あるいは、私が仕様を勘違いしているだけなのか、判断に苦しんでおります。
具体的には、以下のようなコードで再現します。
 
---- cut here ----
#!/usr/local/bin/ruby
# test1.rb

h = { 'foo' => 'cat',
      :bar  => 'dog',
      64 => 'monkey' }

puts '# Initial state'
puts

p h
p h['foo']
p h[:bar]
p h[64]

##

puts
puts '# $= = true'
puts

$= = true
p h
p h['foo']
p h[:bar]
p h[64]

##

puts
puts '# $= = false'
puts

$= = false
p h
p h['foo']
p h[:bar]
p h[64]
---- cut here ----

これを実行しますと、以下のようになります。

---- cut here ----
% ./test1.rb
# Initial state

{64=>"monkey", :bar=>"dog", "foo"=>"cat"}
"cat"
"dog"
"monkey"

# $= = true

{64=>"monkey", :bar=>"dog", "foo"=>"cat"}
nil		# "cat" が期待される出力
"dog"
"monkey"

# $= = false

{64=>"monkey", :bar=>"dog", "foo"=>"cat"}
"cat"
"dog"
"monkey"
---- cut here ----

これはバグなのか、そうでなければなぜこのような振舞いになるのか、
どうかお教えをいただければ幸いです。
よろしくお願いいたします。

--
伊波 源太 / IHA, genta
genta / olug.gr.jp