> From: Christoph Rippel [mailto:crippel / primenet.com] [...] > this very often - I guess you want (you could use inject for this) > something like Sorry, that was orginally an inject version and I misformatted the result. module MultiHash def lset! (*parms) raise TypeError.new 'lset - not enough parameters' if (nl = parms.length - 2)< 0 tmp = self for i in 0...nl do if (minitmp= tmp[parms[i]]).kind_of? Hash (tmp = minitmp) else minitmp= parms.last nl.downto(i+1) { |j| minitmp={parms[j] => minitmp} } tmp[parms[i]] = minitmp return self end end if (tmp.key? parms[nl]) && (parms.last == tmp[parms[nl]]) return nil else tmp[parms[nl]] = parms.last return self end end end ....