有哪些优秀的Perl模块可以根据配置处理文件?
基本上我正在处理数据文件,将它们拆分成列,根据某些列删除一些行,删除不必要的列,将它们与基线进行比较(写入发生更改的位置)并将数据的csv和注释保存为元数据。
示例文件是:
001SMSL22009032020090321024936
002XXXXX20090320102436 010000337 00051
002XXXXX20090320103525 010000333 00090
002XXXXX20090320103525 010000333 00090
002XXXXX20090320103525 010000333 00090
002XXXXX20090320103525 010000333 00090
002XXXXX20090320103525 020000333 00090
009000000009000000000271422122
它将逐行与另一个文件(基线)进行比较,并突出显示一些不同的行(我使用的是Tk::DiffText
)。
这是[is a pipe]
的管道
file - > [split] - > [remove production] - > [sort] - > [compare] - > {user跳入并写入注释,根据需要编辑文件} - > [save csv] - > [save comments]
真正的问题是perl模块有助于建模和制作这样的管道流程吗?经过更多的研究,我发现了这个http://en.wikipedia.org/wiki/Flow-based_programming。
嗯,似乎Perl几乎无法自行处理:
获取数据文件
while (<>)
将它们分成列,
my @row = split(/,/);
根据某些列删除一些行,
next if @row[5] =~ m/black_list_data/;
删除不必要的列
@row = ($row[1], $row[4]);
删除不必要的列
@row = ($row[1], $row[4]);
将它们与基线进行比较(写入发生变化的地方)
好的,在这里你可以使用Algorithm::Diff
并将数据和注释的csv保存为元数据。
看看Sprog。它是用Perl编写的可视化编程引擎(使用Gtk2)。您可以通过拖放“齿轮”来创建Perl程序。您也可以添加自己的齿轮(当然是用Perl编写的)。
我不知道任何基于流程编程的Perl实现,但是我相信Perl 5.8已经为Perl编码器提供了解释器线程(如果我错了,有人会纠正我!),所以构建FBP实现应该相对简单在Perl上。见http://perldoc.perl.org/threads.html