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