On Aug 15, 2008, at 1:32, Ray Pereda wrote: >>> h = Hash.new {|h,k| h[k] = Hash.new(&h.default_proc)} Don't do that. The h inside the block is conflicting with the h outside. Make sure the variables don't collide, and it works: >> the_hash = Hash.new {|h,k| h[k] = Hash.new(&h.default_proc)} => {} >> the_hash[:a][:b][:c] => {} >> the_hash => {:a=>{:b=>{:c=>{}}}} -- Mikael Høélund http://hoilund.org/