Ваш пример ввода выглядит как неправильно сформированный CSV - я не думаю, что то, что вы перечислили, может быть проанализировано в правильном CSV.Например:
"test"and also newline\nhere or something";2;3;4;5;6
"this happens also! "\n here or something";2;3;4;5;6
«Кавычки» вокруг данных указывают, что все, что в них содержится, может иметь специальные символы (разделитель, символ новой строки и т. Д.), Но при закрытии кавычки здесь:
"test"and also newline\nhere or something";2;3;4;5;6
^
Ты сломаешь это.Чтобы вставить цитату, вам нужно поставить две цитаты.Это будет правильно сформировано:
"test""and also newline\nhere or something";2;3;4;5;6
Предполагая, что фактический (обработанный) текст был test" and also...
Если я понимаю, что вы пытаетесь сделать - замените символы новой строки разрывом HTMLЯ думаю, это бы сработало:
use Text::CSV_XS qw(csv);
my @rows;
my $csv = Text::CSV_XS->new({
binary => 1,
auto_diag => 1,
sep_char => ';'
});
open my $IN, '<:encoding(utf8)', "test.csv" or die;
open my $OUT, '>:encoding(utf8)', "new.csv" or die;
while (my $row = $csv->getline($IN)) {
s/\n/<br>/g for @$row;
$csv->print ($OUT, $row);
print $OUT "\n";
}
close $OUT;
close $IN;
Если это пример ввода:
a;b;c;d;e;f
"test""ja ze";2;3;4;5;6
2;3;"This Text has
a newline";5;6;7
3;4;5;6;7;8
4;5;6;7;8;9
Это будет вывод:
a;b;c;d;e;f
"test""ja ze";2;3;4;5;6
2;3;"This Text has<br>a newline";5;6;7
3;4;5;6;7;8
4;5;6;7;8;9
Ноопять же, все это предполагает правильно сформированные данные CSV.