Utilice Text::CSV_XS. Es rápido, moderadamente flexible y extremadamente probado. La respuesta a muchas de estas preguntas es algo sobre CPAN. ¿Por qué dedicar el tiempo a hacer algo que no es tan bueno como lo que muchas personas ya han perfeccionado y probado?
Si no desea utilizar módulos externos, lo cual es una obviedad, mire el código en Text :: CSV_XS y hágalo. Me sorprende constantemente que la gente piense que, aunque piensen que no pueden usar un módulo, no usarán una solución conocida y probada como código de ejemplo para la misma tarea.
Muy similar a http://stackoverflow.com/questions/2174061/whats-the-best-way-to-read-a-huge-csv-file-using-perl –