in reply to Looking for some design guidance

If you don't want the plain Array of Arrays-approach, you could build a Spreadsheet::Perl in memory.

Or if you want to stick to the database metapher, you could use DBI on top of DBD::AnyData or DBD::CSV.

Your data specs sounds as if the data would never exceed a few Megabytes in size, I woudn't worry about not keeping it in memory at all.