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