Какие хорошие Perl-модули для потокового программирования на файлах? - PullRequest
0 голосов
/ 31 июля 2009

Какие хорошие модули 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] -> [удалить производство] -> [sort] -> [сравнить] -> {пользователь заходит и пишет комментарии, редактирует файл по мере необходимости} -> [save csv] -> [save комментарии]

Реальный вопрос в том, какой модуль perl помогает моделировать и создавать конвейерный поток, подобный этому? После дополнительных исследований я нашел это http://en.wikipedia.org/wiki/Flow-based_programming.

Ответы [ 4 ]

1 голос
/ 01 августа 2009

Взгляните на Спрог . Это механизм визуального программирования, написанный на Perl (использующий Gtk2). Вы можете создавать Perl-программы, перетаскивая «шестерни». Вы также можете добавить свои собственные механизмы (написанные на Perl, конечно).

screen shot of Sprog

1 голос
/ 31 июля 2009

Хммм, кажется, что это ничто, Perl не может справиться почти сам по себе:

взятие файлов данных

while (<>) 

разбить их на столбцы,

my @row = split(/,/);

удалить несколько строк на основе некоторых столбцов,

next if @row[5] =~ m/black_list_data/;

удалить ненужные столбцы

@row = ($row[1], $row[4]);

удалить ненужные столбцы

@row = ($row[1], $row[4]);

сравнить их с базовой линией (пишет, где произошли изменения)

Хорошо, здесь вы можете использовать Алгоритм :: Разница

и сохраните CSV-данные и комментарии в качестве метаданных.

Класс :: CSV или DBD :: CSV ?

0 голосов
/ 04 августа 2009

Это то, что я искал:

Текст :: Труба

Текст :: Труба :: Составная

Спасибо за помощь в разъяснении моих идей!

0 голосов
/ 03 августа 2009

Мне неизвестно о каких-либо реализациях Perl Flow-Based Programming, но я считаю, что Perl 5.8 сделал потоки интерпретатора доступными для кодировщиков Perl (кто-то исправит меня, если я ошибаюсь!), Поэтому его сборка должна быть относительно простой. реализация FBP на Perl. Смотри http://perldoc.perl.org/threads.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...