2009-07-31 7 views
-1

Quels sont les bons modules Perl pour traiter les fichiers en fonction des configurations? Fondamentalement, je travaille sur la prise de fichiers de données, les diviser en colonnes, supprimer certaines lignes en fonction de certaines colonnes, supprimer les colonnes inutiles, les comparer à la ligne de base (écrit où les changements ont eu lieu) et enregistrer un csv des données commentaires en tant que métadonnées.Quels sont les bons modules Perl pour la programmation basée sur les flux sur les fichiers?

Exemple de fichier est:

001SMSL24936 
002XXXXX20090320102436    010000337 00051  
002XXXXX20090320103525    010000333 00090  
002XXXXX20090320103525    010000333 00090  
002XXXXX20090320103525    010000333 00090  
002XXXXX20090320103525    010000333 00090  
002XXXXX20090320103525    020000333 00090  
009000000009000000000271422122 

il comparera ligne par ligne avec un autre fichier (ligne de base) et quelques lignes différentes seront mises en évidence (je l'utilise Tk::DiffText).

Voici le pipeline où [is a pipe]

fichier

-> [SPLIT] -> [supprimer la production] -> [trier] -> [comparer] -> {utilisateur saute et écrit des commentaires, fichier les modifications au besoin } -> [save csv] -> [enregistrer les commentaires]

La vraie question est de savoir quel module Perl aide à modéliser et à faire circuler un pipeline comme ça? Après plus de recherche, j'ai trouvé ce http://en.wikipedia.org/wiki/Flow-based_programming.

+0

Quel type de fichiers de données? –

+1

Vous devez ajuster votre question pour montrer un exemple complet du fichier de données, l'entrée que vous attendez et la sortie que vous désirez. Ne pas ajouter à la question à travers les commentaires: faites mieux la question :) –

+0

oups je veux dire est ce meilleur cerveau de foy. – kthakore

Répondre

1

Hmmm, semble que ce n'est rien Perl ne peut pas gérer presque par lui-même:

prenant des fichiers de données

while (<>) 

les diviser en colonnes,

my @row = split(/,/); 

supprimer certaines lignes en fonction des colonnes ,

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

supprimer des colonnes inutiles

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

supprimer des colonnes inutiles

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

les comparer à la valeur initiale (écrit où des changements ont eu lieu)

Ok, là, vous pouvez utiliser Algorithm::Diff

et économisez un csv des données et les commentaires sous forme de métadonnées.

Class::CSV ou DBD::CSV?

+0

Hmm .. le style CSS de citation est assez similaire au style de code :-( –

+0

Je laisse normalement les guillemets sous forme de texte normal ou les fais des commentaires dans le code. –

0

Je ne suis pas au courant des mises en œuvre Perl de la programmation axée sur les flux, mais je crois que Perl 5.8 a fait des fils d'interprètes disponibles pour les codeurs Perl (quelqu'un me corriger si je me trompe!), Il devrait être relativement simple pour construire une implémentation de FBP sur Perl.Voir http://perldoc.perl.org/threads.html

Questions connexes