Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 使用Text::CSV编写输出是否有附加值?_Perl_Csv - Fatal编程技术网

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

Perl 使用Text::CSV编写输出是否有附加值?,perl,csv,Perl,Csv,如果我将表格输出作为CSV写入文件,加载额外模块有什么好处 把我的数据转换成一个对象让我完成一个基本的循环和字符串操作?我已经看到了一些建议这样做的答案:和 对于我可以用四行Perl编写的东西(忽略数据检索等),加载整个模块似乎有些过头,而且开销很大: 那么,装载是什么呢 Text::CSV 请告诉我以上代码?如果$person->{col1}包含“”,您的CSV将无效。此外,所有列都将用双引号括起来,这可能不是您想要的(例如数字)。您还将获得”“对于未定义的值,如果您计划将CSV加载到一个区分

如果我将表格输出作为CSV写入文件,加载额外模块有什么好处 把我的数据转换成一个对象让我完成一个基本的循环和字符串操作?我已经看到了一些建议这样做的答案:和

对于我可以用四行Perl编写的东西(忽略数据检索等),加载整个模块似乎有些过头,而且开销很大:

那么,装载是什么呢
Text::CSV

请告诉我以上代码?

如果
$person->{col1}
包含
”,您的CSV将无效。此外,所有列都将用双引号括起来,这可能不是您想要的(例如数字)。您还将获得
”“
对于未定义的值,如果您计划将CSV加载到一个区分
null

的数据库中,这可能不起作用。对于简单的琐碎数据(无可否认,这是很常见的),这没有好处。您可以
加入
打印
,然后继续快乐的旅程。对于快速丢弃脚本,这可能是您所需要的全部(如果您需要查阅Text::CSV文档,也可以更快)

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

  • 它是否包含逗号
  • 它包含双引号吗
  • 它包含换行符吗
  • 它是否包含非ASCII字符
  • undef
    (无值)和
    '
    (空字符串)之间有区别吗
  • 您可能需要使用不同的分隔符(或让用户指定)
对于生产代码,标准pro模块建议适用于:

  • 重复使用而不是重新发明(特别是当您要生成多个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";
}