Eu consegui trabalhar com s/\r\r\n/<br>/g
para substituir as quebras de linha incorporadas por um html <br>
.
Estou trabalhando na migração do MDaemon para o Google Apps. Como parte desse processo, estou exportando os contatos e calendários de todos os nossos usuários para arquivos CSV e, em seguida, lendo-os em um script em Perl e importando-os para o Google Apps.
Aqui está uma amostra de exportação de calendário mostrada no vi com ": set list" em.
"Event 1","05/05/2009","0:00:00","05
/05/2009","23:59:00","True","True","05/04/2009","23:45:00",,,,"",,,"False","Normal",0$
"Event 2","09/21/2009","11:00:00","09/21/2009","11:30:00","False","False",,,"[email protected]","",,"Notes from=A0^M$
Vendor=A0",,"","False","Normal",1$
"Event 3","04/05/2010","0:00:00","04/05/2010","23:59:00","True","True","04/04/2010","23:45:00",,,,"",,,"False","Normal",0$
"Event 4","05/05/2010","0:00:00","05/05/2010","23:59:00","True","True","05/04/2010","23:45:00",,,,"",,,"False","Normal",0$
Estou tendo problemas com as linhas que terminam em ^ M $, que devem ser finais de linha incorporados. Meu analisador CSV Text :: CSV_XS está analisando-os como várias linhas em vez de uma única linha. Como posso substituir o ^ M $ com ^ M? Qualquer outra sugestão é bem vinda.
Aqui está meu código de análise:
my $csv = Text::CSV_XS->new ({ binary => 1, eol => $/,auto_diag => 1 }) or
die "Cannot use CSV: ".Text::CSV_XS->error_diag ();
open my $fh, "<", $username . "-calendar.csv" or die $!;
while (my $row = $csv->getline ($fh)) {
print STDERR "NEW LINE: " . Dumper($row) . "END NEW LINE\n";
push @rows, $row;
}
$csv->eof or $csv->error_diag ();
close $fh;
UPDATE 1: Aqui está a saída de "arquivo" sobre este arquivo:
Non-ISO extended-ASCII English text, with very long lines, with CRLF, LF line terminators