open my $fh, "<:encoding(utf8)", "test.csv" or die "test.csv: $!"; while ( my $row = $csv->getline( $fh ) ) { $row->[2] =~ m/pattern/ or next; # 3rd field should match push @rows, $row; } #### ... while (my $line = ) { chomp $line; if ($csv->parse($line)) { ... #### open my $CSV, '<:encoding(utf8)', $file or die "Cannot open $file: $!\n"