Use Tree instead of Tree::Nary. It better supports the traversal and value needs you're describing. Plus, allows you to more easily introspect the tree to divide it.
My criteria for good software:
Does it work?
Can someone else come in, make a change, and be reasonably certain no bugs were introduced?