Tie::CSV_File fills a niche, but does not lower the threshold for beginners. I even think that using tie is way outside of the problem I am trying to understand: to lower the barrier to use CSV *safely* and reliable without people complaining the API is too difficult.
Using tie, I personally prefer to use Tie::Hash::DBD in combination with DBD::CSV, as I can then transparently switch to DBD::SQLite, DBD::Pg or any other relational database when CSV turns out to be too slow.
Enjoy, Have FUN! H.Merijn