in reply to Few lines in CSV file are skipped

Not sure what exactly your "real" problem is (see hippo's comments), but this caught my eye.
if ($csv->parse($line)) { #Skip first line next if ($. == 1); } my @fields = $csv->fields();
If the call to parse fails, you skip the check for a header line, and go right on to call fields. On a parse failure, fields returns undef, so the contents of $line are ignored. Recommend that you use a real check for a parse failure, something like this.
$csv->parse($line) or die $csv->error_diag();
Your script will probably fail, and you'll have to diagnose the actual problem with your CSV file.