From: ts Date: 2003-08-28T19:47:38+09:00 Subject: Re: Another Ruby-powered site >>>>> "T" == Thomas Hurst writes: T> class WeakRefHash < Hash Try something like this (this is just an example) svg% cat b.rb #!/usr/bin/ruby class WeakRefHash < Hash def final(a) lambda { delete(a) } end def []=(key, value) ObjectSpace.define_finalizer(value, final(key)) super(key, value.id) end end def a(h, k) h[k] = [] end h = WeakRefHash.new('default') 3.times {|i| a(h, i)} GC.start 3.times {|i| p h[i]} svg% svg% b.rb "default" "default" "default" svg% Guy Decoux