Perl 使用Text::CSV编写输出是否有附加值?
如果我将表格输出作为CSV写入文件,加载额外模块有什么好处 把我的数据转换成一个对象让我完成一个基本的循环和字符串操作?我已经看到了一些建议这样做的答案:和 对于我可以用四行Perl编写的东西(忽略数据检索等),加载整个模块似乎有些过头,而且开销很大: 那么,装载是什么呢Perl 使用Text::CSV编写输出是否有附加值?,perl,csv,Perl,Csv,如果我将表格输出作为CSV写入文件,加载额外模块有什么好处 把我的数据转换成一个对象让我完成一个基本的循环和字符串操作?我已经看到了一些建议这样做的答案:和 对于我可以用四行Perl编写的东西(忽略数据检索等),加载整个模块似乎有些过头,而且开销很大: 那么,装载是什么呢 Text::CSV 请告诉我以上代码?如果$person->{col1}包含“”,您的CSV将无效。此外,所有列都将用双引号括起来,这可能不是您想要的(例如数字)。您还将获得”“对于未定义的值,如果您计划将CSV加载到一个区分
Text::CSV
请告诉我以上代码?如果
$person->{col1}
包含“
”,您的CSV将无效。此外,所有列都将用双引号括起来,这可能不是您想要的(例如数字)。您还将获得”“
对于未定义的值,如果您计划将CSV加载到一个区分null
和”
的数据库中,这可能不起作用。对于简单的琐碎数据(无可否认,这是很常见的),这没有好处。您可以加入
,打印
,然后继续快乐的旅程。对于快速丢弃脚本,这可能是您所需要的全部(如果您需要查阅Text::CSV文档,也可以更快)
当您的数据非常重要时,优势就开始了
- 它是否包含逗号
- 它包含双引号吗
- 它包含换行符吗
- 它是否包含非ASCII字符
(无值)和undef
(空字符串)之间有区别吗'
- 您可能需要使用不同的分隔符(或让用户指定)
- 重复使用而不是重新发明(特别是当您要生成多个CSV文件时)
- 它使您的代码更干净(更一致,关注点分离更好)
- CPAN模块通常比内部解决方案更快(优化更好)、更健壮(边缘案例处理),并且具有更干净的API
- 加载模块的开销几乎肯定不是问题
Text::CSV
默认情况下将使用XS模块Text::CSV齌XS
作为其后端,这将大大快于任何非平凡的Perl等价物。join(',',,map{qq/“$person->{$}/}@head
与join(',',,map{qq/“$//}}{$person}{@head相比更好。
my $rptText = join(',', map { qq/"$_"/ } @head) . "\n";
foreach my $person ( @$data ) {
$rptText .= join(',', map { qq/"$person->{$_}"/ } @head) . "\n";
}