I've always used Text::CSV, I like it because I can get it working without doing a proper make install (just grabbing the .pm module*). That means I can easily through it in with a script I produce and don't have to worry about the resulting server having the module installed. After all they may be on shared hosting, and unable to do a proper make install.
* I tell a little lie, I also had to copy over another file, but I can't remember what it was...