Hash使うときは毎回
h = Hash.new
i = Hash.new
box = Hash.new

みたいに宣言が必要なのでしょうか?

いきなり
box["key"] = value
みたいにしてもハッシュにならないのですが、ちょっと面倒ですね。