in reply to Using Text::CSV

I don't understand why this is confusing, what are you reading?

getline

...It reads a row from the IO object $io using $io->getline () and parses this row into an array ref. This array ref is returned by the function or undef for failure.
parse
This object function decomposes a CSV string into fields, returning success or failure. Failure can result from a lack of argument or the given CSV string is improperly formatted. Upon success, fields () can be called to retrieve the decomposed fields . Upon failure, the value returned by fields () is undefined and error_input () can be called to retrieve the invalid argument