perl - 使用 Text::CSV 编写输出是否有附加值?

标签 perl csv

如果我将表格输出作为 CSV 文件写入文件,加载额外模块有什么好处 Text::CSV 并将我的数据转换为对象让我完成基本的循环和字符串操作?我看到了一些建议这样做的答案:How can I get column names and row data in order with DBI in PerlHow do I create a CSV file using Perl .

加载整个模块对于我可以用四行 Perl 编写的东西(忽略数据检索等)来说似乎有点矫枉过正和巨大的开销:

my $rptText = join(',', map { qq/"$_"/ } @head) . "\n";

foreach my $person ( @$data ) {
    $rptText .= join(',', map { qq/"$person->{$_}"/ } @head) . "\n";
}

那么loading是做什么的 文本::CSV 让我完成上面的代码?

最佳答案

对于简单 琐碎的数据(无可否认,这很常见)没有任何优势。您可以加入打印,然后继续您的快乐之旅。对于可能需要的所有快速一次性脚本(如果您需要查阅 Text::CSV 文档,速度也会更快)。

当您的数据非常重要时,优势就开始了。

  • 是否包含逗号?
  • 是否包含双引号?
  • 是否包含换行符?
  • 是否包含非 ASCII 字符?
  • undef(无值)和''(空字符串)有区别吗?
  • 您可能需要使用不同的分隔符(或让用户指定)吗?

对于生产代码,标准的 pro-module 建议适用:

  • 重用而不是重新发明(尤其是当您要生成多个 CSV 文件时)
  • 它使您的代码更简洁(更一致且关注点分离更好)
  • CPAN 模块通常比内部解决方案更快(优化得更好)、更稳健(边缘情况处理),并且具有更简洁的 API。
  • 加载模块的开销几乎肯定不是问题。

关于perl - 使用 Text::CSV 编写输出是否有附加值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51267774/

相关文章:

perl - 用不同的名称替换哈希键

perl - 在哪里可以找到面向对象的 Perl 教程?

android - CSV 文件在 Android 中的位置

PHP CSV 导出在 10000 条记录后不起作用

r - 如何从R中的关联规则中删除大括号和 '' =>“符号

r - 如何将 CSV 文件读入 R?

windows - 在 Windows 中,如何将已替换为十六进制 ASCII 的原始字符恢复到 csv 文件中?

perl - 如何在 CGI 中打印纯文本?

perl - 在 Perl 中使用 map 仅在键存在时进行映射

perl - 我是否应该使用核心模块 Net::Ping,即使它在 CPAN 测试器上有这么多失败?