No hash can really store complex data structures, they can store references to them,
which is why when SDBM_File serializes the data structure,
what gets stored as a value instead of a reference is its string value (print [] prints ARRAY(0x225240), but $a="ARRAY(0x225240)"; is not an array reference).
What you should investigate is MLDBM (pay attention to the BUGS ).