In The Mythical Man-Month Brooks said, "Show me your flowcharts and conceal your tables, and I shall continue to be mystified. Show me your tables, and I won't usually need your flowcharts; they'll be obvious."
I interpret this to mean, "Show me your data and I can understand your code."
Basically, if you document what your data structure should look like, what the the keys at both levels should be as well as the value of the second level keys, then maintenance should be a snap.
I use the following notation for hashes (I probably should just use the format that Data::Dumper uses but I like this, too)
|->key1 | |->key1.1 = value1.1 | |->key2 | |->key2.1 = value2.1 | |->key3 |->key3.1 = value3.1It sort of represents how I've visualized hashes.