On Feb 11, 4:43 ¨Βν¬ Αδαν Ηςοφεσ Όαδαν®ηςο®®®ΐηναιμ®γονχςοτεΊ > Hi, > > I'm banging my head against the wall with the following problem: > > array = ["home", "about", "about/history", "about/company", > "about/history/part1", "about/history/part2"] > > I want to build a tree from this array in the form of a nested hash: > > {"home" => nil, "about => {"history => ["part1" => nil, "part2" => > nil]", "company" => nil}} Your output doesn't seem consistent. (Why an array sometimes but a hash others?) Here's something simple and close: array = ["home", "about", "about/history", "about/company", "about/ history/part1", "about/history/part2"] auto_hash = Hash.new{ |h,k| h[k] = Hash.new &h.default_proc } array.each{ |path| sub = auto_hash path.split( "/" ).each{ |dir| sub[dir]; sub = sub[dir] } } p auto_hash #=> {"about"=>{"company"=>{}, "history"=>{"part1"=>{}, "part2"=>{}}}, "home"=>{}}