I'm pretty sure that kal is right here, the key feature
being the use of the "binary" option. One of the many
silly things about CSV_XS is that you *always* want to
use the "binary" option (this is reminiscent of FTP in
the old days, before they got a clue and made "binary"
the default). Pretty much all real text is "binary"
from the point of view of CSV_XS (e.g. if you want to use
any iso8859 extended characters).
But the last time I looked you definitely wanted to use "CSV_XS", not the older "CSV" module. They're really not
the same.