Como posso lidar com novas linhas embutidas em arquivos CSV em Perl?
Pergunta
Estou lendo um arquivo .csv que foi criado em Excel com a primeira linha cabeçalhos estar coluna. Um cabeçalho da coluna contém uma nova linha incorporado. Eu quero ignorar essa nova linha, mas lê-lo linha por linha como:
while ( <IN> ) {
...
}
irá tratá-lo como uma nova linha que vai quebrar meu código (que eu ainda não escrito). Meu abordagem foi a de ler a primeira linha em uma matriz de posições de coluna e processar o resto das linhas de forma diferente.
Existe talvez um regex que eu posso usar em algum lugar no while
que ignora a nova linha, a menos que seja a última nova linha?
Ou eu deveria estar se aproximando isso de forma diferente?
Solução
Use um dos módulos Perl que CSV punho, como Text :: CSV_XS . Sua documentação mostra como lidar com newlines incorporados. Em geral, você não quer gastar seu tempo escrevendo outro parser CSV; continuar com as partes mais importantes de sua tarefa!