プラグイン可能な/ダイナミックデータ処理/munging/変革が必要とするperlモジュール?

StackOverflow https://stackoverflow.com/questions/4207267

質問

クロスを表示しない"の設定を解除し、perlmonks:

うれしいクリーンあり総古代コード、 以前のようにしていく新しいモジュールにプレイしていただければと思い用のクリエイティブディレれば誰でも知っても適しています。

実行時に私の解析ファイルを処理しいなどのデータです。

私が書くモジュールの思いでの総称(-DBI別)ですが、私の正確な使用例です:

たくさんのSQLファイルを決定するクエリの実行に対するデータベースです。い解析コメントのトップを決定する

  • カラムのニーズについてのs///適用
  • 列Bのニーズを大きく変わろうとしてという日付の指定された形式
  • カラムCが種tr///.
  • またいで連鎖させるカラムDがs///にしえない場合、1または2、セットアップすることができる3.

そこで取得dbからのプログラム適用の可積)変換後のデータです。

現在のコードはdisgustingly大が難しいシリーズの場合は条項 処理チルコマッシモとカラカラ浴が困難読み込みまたは維持の配列でください。

なので私が想像しがたいオブジェクトを構文解析されるよう (やまな機能性インターフェース), スタックのリストからプロセッサの適用 それを実行することができるようになっ渡された作品のデータです。

任意する場合があり名/カテゴリーオプション その一つのオブジェクトに対し使用できる動的にスタックプロセッサのみ指定された名前のリンクをクリックする。

れたり、逆に例:

$obj = $module->new();  
$obj->parse("-- greeting:gsub: /hi/hello"); # don't say "hi"  
$obj->parse("-- numbers:gsub: /\D//"); # digits only  
$obj->parse("-- numbers:exchange: 1,2,3 one,two,three"); # then spell out the numbers  
$obj->parse("-- when:date: %Y-%m-%d 08:00:00"); # format like a date, force to 8am  
$obj->stack(action => 'gsub', name => 'when', format => '/1995/1996/'); # my company does not recognize the year 1995.  

$cleaned = $obj->apply({greeting => "good morning", numbers => "t2", when => "2010116"});  

各プロセッサー(gsub、日付、取引所が別の型です。プラグインできる定義を追加します。.

$obj->define("chew", \&CookieMonster::chew);  
$obj->parse("column:chew: 3x"); # chew the column 3 times  

では、あなたの最初の質問は、誰も知らのモジュールがうのですか?約このを見つけることができました。では"mod://ハッシュ::に変化させることにより, っているかを決定する処理のない動的に実行時に 思 常に 最後に、 "複合" オプションていただきたいと思いますが、パーサ/スタッカー.

は誰もが認識した場合は同様のモジュールや弱関連モジュールがいいかもしれませんね活用し/ラップ?

ばにある汎用が公衆消費量を確実に鉱山だけではないのdarkpan), は誰でもアドバイスについてまたはインターフェースの提案もその用途 まmungingのデータからDBI、テキスト::CSVなどが有ります。

この文書は新しいモジュールなんて名前空間の提案?と思うものの下でのデータ::う適切な...のプラグイン可能な"常来的な目的を持つことが必要と用語の使用例を思い出PAM, でも本当にいいアイデア...

  • データ::プロセッサー::プラグイン可能な?
  • データ::Munging::設定可能?
  • I::咀嚼::データはもらえますか?
役に立ちましたか?

解決 3

皆さん、ありがとうござその思いを語りました。

ハロウィンパーティー: るようにして、適応、数少ない既存のモジュールの成績を抽象化を自分の:サブ::ます。でも仕事がはいかが必要です。

ロングバージョン: (抜粋からのポッド)

=head1理由

このモジュールを始めとして、データ::Transform::名の通り、 名前付きラッパーなどのサブ::チェーン::名) データ::Transform(具体的にデータ::Transform::になります。

モジュールとしてはほぼ完成感を使った非常に少ない データ::Transform(およびドキュメントと 私はあなたみたい。他にも、出力は常に何かできたので、良かったです。そのことについて行ったのが目的 データ::に変換し、このモジュールで必要なければならないと思います。

いう考えを抽象的に その本質にしたステートがモジュールに縛られない データ変換なの承継の簡易型に発信します。

そして見るサブ::パイプライン が利用できるように同じ 名前の型が異なる引数に単一のチェーン でもやっ棒をコードした だけで名前を変更できます、そしています。

またルール::エンジンをはじめとした開発 当時の私を示すことが知られています。しかし、データ::に変換ではかなり複雑なります。実際に見ることルール::エンジンを使った[のに非常に優れ]ムース 私はパスすることに決めた頃から仕事の非常に古い機械 旧distros旧perlsや制約されます。も、それだけでも大きく超えるものとないっぱいになりました。

=カット

としての"構文解析方法"にidea/例 いことが必要、では、現在のような書式

$chain->append($sub, \@arguments, \%options)

他のヒント

最初に私が会場のどれにも当てはまらないフォーマットとしてのSQLクエリーが可能です。のような日付フォーマット等あの取り扱いにあたってはSQL.

できるようにしたいとの私の頭のモジュールかされる可能性のあるお客様の特定の目的のためには データ::FormValidator.はははは主としての妥当性を検証CGIパラメータで機能を必要なもの:で定義されィルタの制約としています。なが他のモジュールをごめんです。

きんいて示唆します。定義ができる何らかのコマンドラチェーンの各種データ用の入力端子が付いています。思いこれらのテーマに沿った:

package MyDataProcessor;

use Moose;
has 'Transformations' => (
    traits => ['Array'],
    is => 'rw',
    isa => 'ArrayRef[MyTransformer]',
    handles => {
        add_transformer => 'push',
    }
);

has 'input' => (is => 'rw', isa => 'Str');

sub apply_transforms {  }


package MyRegexTransformer;

use Moose;

extends 'MyTransformer';

has 'Regex' => (is => 'rw', isa => 'Str');
has 'Replacement' => (is => 'rw', isa => 'Str');

sub transform {  }

# some other transformers
#

# somewhere else
#
#

my $processor = MyDataProcessor->new(input => 'Hello transform me');

my $tr = MyRegexTransformer->new(Regex => 'Hello', Replacement => 'Hi');

$processor->add_transformer($tr);

#...

$processor->apply_transforms;

私は把握していないデータ変換CPANモジュールになったロールを自分なります。また大きく複雑なすことがで運営している同様の原則;では基本的に貧しい人の実施テムを構築-スタイルETL sansにGUI...設定したPerlのハッシュ(PerlではなくXMLでに実施する複雑なルールとして互に参照).

と名前空間なったと思い Data::Transform::*

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top