in reply to Complex Data Structures

When my data structures start getting too complex, I usually see if there's a way I can pull some of the data manipulation (and even the data itself) into a module. Many times I've come back to a program after a few months and said, "Well, it looks like a hash of arrays of hashes of hashes, but what the heck does that mean?" I find it helpful to use functions or object methods to manipulate those data so that I can say something like
$purchase_table->add_purchase($customer, $basket, $purchase_id, $value +);
instead of
$purchases->{$customer}->[$basket]->{$purchase_id} = $value;
That way, I not only understand exactly what's going on, but I'm also less likely to screw myself up by manipulating the large structure differently in different places in the code. And I can change the actual implementation without changing the function/method calls.

And as jeffa mentioned, Data::Dumper is a lifesaver. :-)

-- Mike