A someone else noted, select * is a bad idea. Even if you *want* all the fields in the table, it's better form (and easier to manage in the long run) if you name the fields you want to select. If you don't and someone changes the table then all of a sudden your array is out of whack and everything breaks. Same goes for inserts.
in reply to Memory usage with DBI
If performance and speed are not as big an issue as nice, readable code you could also consider using fetchrow_hashref to fetch your data items as a hash of field name/value pairs.