http://qs321.pair.com?node_id=753279


in reply to Tie::Handle::CSV dynamically detecting header names

Text::xSV is worth a look. You can read in the header row, add aliases to those headers, and then fetch the rest of the rows' data by header name/alias.

This module has a couple of other features that make it my preferred module for handling unpredictable user-uploaded csv files. It handles multiline data well, it lets you to apply filters to pre-process the data, and it has very easy-to-use error handling.