Существует более одного способа сделать это.
- DBD :: CSV - Используйте SQL для чтения и записи файлов CSV.
- Text :: CSV - Построить и проанализировать CSV-файлы по одной строке за раз. Это в значительной степени золотой стандарт для манипулирования CSV.
- POE :: Filter :: CSV - Предоставляет CSV-фильтр для ввода / вывода вашего POE.
- Data :: Tabular :: Dumper :: CSV - Дамп таблицы непосредственно в файл CSV (объекты с одинаковым интерфейсом могут выполнять дамп в файлы XML или MS Excel).
На CPAN также есть много других
Конечно, вы можете игнорировать все это и просто использовать цикл, объединение и печать:
my @table = (
[ 'a', 'b', 'c'],
[ 1, 2, 3 ],
[ 2, 4, 6 ],
);
for my $row ( @table ) {
print join( ',', @$row ), "\n";
}
Просто запустите ваш скрипт и перенаправьте вывод в файл, взрыв! вы сделали. Или вы можете сойти с ума и открыть дескриптор файла и распечатать непосредственно в файл.
Но тогда вы не будете обрабатывать многострочные поля, или встроенные запятые, или любые другие странности, которые могут возникнуть в такой задаче обработки данных. Так что будьте осторожны с этим подходом.
Мои рекомендации:
- Если вы строите POE
приложение, используйте POE :: Filter.
- Если вы монстр SQL / DBI и мечтаете
SQL, или может потребоваться заменить CSV
вывод с реальной базой данных
соединение, используйте DBD :: SQL.
- Если у вас есть
простые данные и катаются вместе
грубый маленький сценарий
отформатировать некоторые данные для вашей таблицы
чтобы переварить, использовать print и join - делайте это без кода с ожидаемой продолжительностью жизни более 2 часов.
- Если вы
хотите, чтобы сбросить блок данных в
Использование CSV или XML
Данные :: Табличный :: Dumper :: CSV.
- Если вы пишете что-то, что должно быть стабильным, обслуживаемым и быстрым, и вам нужен максимальный контроль для ввода и вывода, используйте Text :: CSV. (Обратите внимание, что POE :: Filter :: CSV, Data :: Tabular :: Dumper :: CSV и DBD :: CSV все используют Text :: CSV или Text :: CSV_XS для внутренней обработки).