2

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

谢谢。

4

1 回答 1

2

使用配置为使用制表符作为分隔符的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);
于 2012-12-08T14:17:03.577 回答