有哪些优秀的Perl模块可以对文件进行基于流的编程?

时间:2009-07-31 13:53:31

标签: perl data-processing

根据配置处理文件有哪些优秀的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 - > [拆分] - > [删除生产] - > [sort] - > [比较] - > {用户跳入并撰写评论,根据需要编辑文件} - > [保存csv] - > [保存评论]

真正的问题是perl模块有助于建模和制作这样的管道流程吗? 经过更多的研究,我发现了http://en.wikipedia.org/wiki/Flow-based_programming

4 个答案:

答案 0 :(得分:1)

嗯,似乎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保存为元数据。

Class::CSVDBD::CSV

答案 1 :(得分:1)

看看Sprog。它是用Perl编写的可视化编程引擎(使用Gtk2)。您可以通过拖放“齿轮”来创建Perl程序。您也可以添加自己的齿轮(当然是用Perl编写的)。

screen shot of Sprog

答案 2 :(得分:0)

我不知道任何基于流程编程的Perl实现,但我相信Perl 5.8已经为Perl编码器提供了解释器线程(如果我错了,有人会纠正我!),所以构建它应该相对简单Perl上的FBP实现。见http://perldoc.perl.org/threads.html

答案 3 :(得分:0)

这就是我想要的:

Text::Pipe

Text::Pipe::Stackable

感谢您帮助我澄清我的想法!