my @rows
имеет следующие данные:Как я могу выделить строки с новой строкой при экспорте в CSV с помощью Text :: CSV?
[
[
'',
'2000',
'2001',
'2002',
'2003',
'2004',
'2005',
'2006',
'2007',
'2008',
'2009',
'2010',
'2011',
'2012',
'2013',
'2014',
'2015',
'2016',
'2017'
],
[
'PA',
1848,
1851,
1840,
1783,
1598,
1084,
1308,
1170,
1388,
1326,
1397,
1452,
1435,
1425,
1377,
1343,
420,
30
]
]
Я пытаюсь экспортировать в CSV с Text::CSV
. У меня есть этот код, который в основном рваные со страницы док:
sub generate_csv_file {
my $self = shift;
my $rows = shift;
open my $fh, ">:encoding(utf8)", "state_reports.csv" or logf("Can't open CSV file for writing");
$self->csv->print ($fh, $_) for @$rows;
close $fh or logf("Can't close CSV file");
}
Файл он генерирует выглядит так: все данные в одной строке:
,2000,2001,2002,2003,2004,2005,2006,2007,2008,2009,2010,2011,2012,2013,2014,2015,2016,2017PA,1848,1851,1840,1783,1598,1084,1308,1170,1388,1326,1397,1452,1435,1425,1377,1343,420,30TX,1165,1198,1202,1177,1132,772,928,866,1024,946,982,1067,1068,1050,1038,1011,310,0
Я просмотрел документацию, но не см. любой очевидный способ разделения строк на новую строку. Я должен что-то упустить.
'' \ r \ n "' is * not * безопасный выбор. Perl применяет уровень PerlIO ': crlf' к STDIN и STDOUT в системах Windows по умолчанию. Это преобразует каждый '\ n' в' \ r \ n' на выходе, поэтому отправка '\ r \ n' приведет к' \ r \ r \ n' в конце каждой строки файла. Вы можете «binmode STDOUT», а затем использовать '\ r \ n' для' eol', но я не понимаю, почему вы это сделали. '$ /' is '" \ n "" по умолчанию как для Windows, так и для Linux. Это может быть по умолчанию повсеместно, но я не уверен в таких платформах, как системы VMS или EBCDIC. – Borodin
@Borodin Хорошая добыча, я не уверен, почему H.Merijn Brand добавил это в документы. Я отправил [билет] (https://rt.cpan.org/Ticket/Display.html?id=120145) (документы Text :: CSV - это просто бесстыдная копия документов Text :: CSV_XS, м, начиная с источника). – ThisSuitIsBlackNot
Мне не пришло в голову, что «Text :: CSV» является основным модулем. Отлично сработано. – Borodin