in reply to Basic Database?

I don't know of any ready-to-go solution. The *SQL way may be not so bad after all. The interfaces are nice, and the performance is a non-issue with modern systems. But if you insist, it's not difficult to implement. Just use a pipe (or any character that is garanteed to be not used in the fields) to make strings of the 2nd-level info.
use Some_DB_that_you_like; tie %db Some_DB_etc; my $two_level_hash = $what_ever_your_data; for my $key_one (keys %$two_level_hash){ my @vals = values %{ $two_level_hash->{$key_one} }; my $item = join '|', @vals; $db{ $key_one } = $item; }
..to populate your DB; You can fetch items in a similar fashion with split;

Hope this helps,

Jeroen
"We are not alone"(FZ)