代码之家  ›  专栏  ›  技术社区  ›  kthakore

基于文件的流编程有哪些好的Perl模块?

  •  -1
  • kthakore  · 技术社区  · 17 年前

    基于配置处理文件的好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]

    文件->[split]->[remove production]->[sort]->[compare]->用户跳转并写入注释,根据需要编辑文件->[save csv]->[保存注释]

    真正的问题是什么Perl模块有助于建模和生成这样的管道流? 经过更多的研究,我发现了这个 http://en.wikipedia.org/wiki/Flow-based_programming .

    4 回复  |  直到 17 年前
        1
  •  1
  •   Brad Gilbert    17 年前

    嗯,似乎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::CSV DBD::CSV ?

        2
  •  1
  •   Chas. Owens    17 年前

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

    screen shot of Sprog http://sprog.sourceforge.net/screenshots/images/01_assembly.png

        3
  •  0
  •   Paul Morrison    17 年前

    我不知道任何基于流的编程的Perl实现,但我相信Perl5.8已经使Perl编码器可以使用解释器线程(如果我错了,有人会纠正我!)因此,在Perl上构建FBP实现应该比较简单。见 http://perldoc.perl.org/threads.html

        4
  •  0
  •   kthakore    17 年前

    这就是我要找的:

    Text::Pipe

    Text::Pipe::Stackable

    谢谢你帮我澄清我的想法!