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

问题描述 投票:-1回答:4

有哪些优秀的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 data-processing
4个回答
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
投票

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

screen shot of Sprog


0
投票

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


0
投票

这就是我要找的东西:

Text::Pipe

Text::Pipe::Stackable

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

© www.soinside.com 2019 - 2024. All rights reserved.