如果我将表格输出作为CSV写入文件,那么加载额外模块Text::CSV
并将我的数据转换为对象有什么好处
让我通过基本循环和字符串操作?我已经看到了一些建议这样做的答案:如何在Perl中使用DBI获取列名和行数据以及如何使用Perl创建CSV文件.
加载一个完整的模块对于我可以在四行Perl中编写的东西(忽略数据检索等)来说似乎有点过分和巨大的开销:
my $rptText = join(',', map { qq/"$_"/ } @head) . "\n";
foreach my $person ( @$data ) {
$rptText .= join(',', map { qq/"$person->{$_}"/ } @head) . "\n";
}
Run Code Online (Sandbox Code Playgroud)
那么什么加载
Text::CSV
让我通过上面的代码?
对于简单的琐碎数据(不可否认,这很常见),没有任何优势.你可以join,print然后继续你的快乐方式.对于快速丢弃的脚本,您可能只需要(如果您需要查阅Text :: CSV文档,也可以更快).
当您的数据非常重要时,优势就开始了.
undef(无值)和''(空字符串)之间有区别吗?对于生产代码,标准的亲模块建议适用:
如果$person->{col1}包含,您的CSV将无效".此外,所有列都将用双引号括起来,这可能是不可取的(例如数字).您还将获得""未定义的值,如果您计划将CSV加载到区分null和之间的数据库中,这可能不起作用''.
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |