move csv.pm to using a filehandle instead of a filename so that we can pass in a flock'd filehandle