open my $csv_fh, '<', 'input.csv'; open my $tff_fh, '>', 'output.tff'; my $field = qr{ " (? [^"]* ) " | (? [^,"]* ) }x; while (my $line = <$csv_fh>) { $line =~ s{ $field (? ,?) } { $+{field} . ($+{comma} && chr 31) }gxe; $line =~ s{\n}{chr 30}xe; print {$tff_fh} $line; }