如何使用perl将行附加到csv文件

如何使用perl将行附加到csv文件,perl,csv,Perl,Csv,我有24个.csv文件,每个大约有1000行长,它们是用Tie::Array::csv创建的。现在我想每天在它们上面加一两行,最有效的方法是什么 我想我可以将每个文件读入一个数组,添加数据,然后再次将数组写入csv,但这意味着,如果覆盖过程中出现问题,我可能会丢失所有数据,如果我创建新文件,我需要找到一个系统来自动管理每天不断堆积的副本的所有副本 如果没有附加行的模块,如何使用正确的csv所需的所有约定和转义字符手动执行,以便可以毫无问题地将它们读回perl 谢谢你的回复,我没有足够的声誉来直

我有24个.csv文件,每个大约有1000行长,它们是用Tie::Array::csv创建的。现在我想每天在它们上面加一两行,最有效的方法是什么

我想我可以将每个文件读入一个数组,添加数据,然后再次将数组写入csv,但这意味着,如果覆盖过程中出现问题,我可能会丢失所有数据,如果我创建新文件,我需要找到一个系统来自动管理每天不断堆积的副本的所有副本

如果没有附加行的模块,如何使用正确的csv所需的所有约定和转义字符手动执行,以便可以毫无问题地将它们读回perl

谢谢你的回复,我没有足够的声誉来直接给答案添加评论,所以我回答了原来的问题

我不担心我的数据丢失太多,我可以从头开始重建它,这只是需要时间和人工干预,但不足以保证运行一个日常备份系统,认为这是一个需要考虑的问题。附加行在处理时间上也应该更容易,因为在我的机器上,将.csv写入磁盘的速度相对较慢

在追加模式下打开文件是我所不知道的。解决方案涉及$csv->打印$fh,$row;我应该通过一个循环来添加多行吗

我已经提出了另一个解决方案

这样会更好吗?我现在没有机会测试它

编辑。将解决方案推到魔法之上。考虑这个关闭。

< P>使用:

这将在file.csv中添加一行,使用\n作为下线字符,逗号作为字段分隔符。这是默认设置,并在包含逗号的字段周围加引号:

foo,bar,"foo,bar"

如果您担心数据丢失,请投资备份。从perldoc-f open,以下文本:`If MODE is>>,将打开该文件进行追加,必要时将再次创建该文件`
use Text::CSV;

my $csv = Text::CSV->new({ binary => 1, auto_diag => 1, eol => "\n"})
        or die "Cannot use CSV: " . Text::CSV->error_diag();

# open in append mode
open my $fh, ">>", "file.csv" or die "Failed to open file: $!";

$csv->print($fh, [ "foo", "bar", "foo,bar" ]);

close $fh;
foo,bar,"foo,bar"