http://www.perlmonks.org?node_id=123718

CSV has very specific requirements. This simple snippet will parse the CSV file, and report any lines that would generate errors with DBD::CSV. Currently, it uses Text::CSV, but you could change it to Text::xSV or Text::CSV_XS fairly easily. specify filenames on the command line, as such: ./vfycsv FILENAME FILENAME2

update 11/06/01: added close line.

#!/usr/bin/perl -w use strict; use Text::CSV; my $csv=Text::CSV->new(); my $line; my $status; my $bad; my $filename; while($filename = shift @ARGV) { open F, $filename or die "opening filename: $!\n"; while($line=<F>) { $status=$csv->parse($line); if($status ==0) { chomp($bad = $csv->error_input()); print "error: $filename($.):\n$bad\n"; } } close F or die "closing $filename: $!"; }