perl数据库数据传输,csv,tsv

时间:2012-12-08 13:36:32

标签: database perl csv tsv

我正在为我的客户在perl中编写小脚本,该脚本将从数据库中提取某些数据,并通过附件将带有此数据的电子邮件发送给客户端。脚本本身不是问题,问题是文件。我认为标准.csv文件会很好,脚本正在做它应该做的事情没有任何问题,但客户端进一步处理数据的软件需要.tsv文件没有任何分隔符,如双引号。麻烦的是,数据库数据包含他们需要的特殊字符,例如带有新行和双引号的文本。一旦脚本运行,它就会创建.tsv,但是特殊字符会弄乱它,所以它们需要以某种方式进行转义,不幸的是我不能在.csv文件中使用双引号。有没有更好的解决方案?

感谢。

1 个答案:

答案 0 :(得分:1)

使用Text::CSV配置为使用制表符作为分隔符:

#!/usr/bin/env perl
use strict;
use warnings qw(all);
use Text::CSV;

my $tsv = Text::CSV->new({
    #quote_char      => undef,
    #escape_char     => undef,
    sep_char        => "\t",
    eol             => "\n",
    quote_space     => 0,
    quote_null      => 0,
});

my @line = ("column1\t", 12345, scalar localtime);
$tsv->print(\*STDOUT, \@line);