in reply to Newbie question

hippo has answered #2, but you could also have a look at Data::Frame for a general structure. It does not do things like joins and the API is marked as experimental, but it might still be interesting.

Data::Frame uses PDL for the numeric data, which is something else you could look at if you do not have mixed strings and numbers (but then you would probably be asking about numpy equivalents).

It also has a high number of fails on cpan testers, but those seem to have been cleared up with recent releases of PDL.