NAME
Trigger - トリガにより処理を行う。
概要
use Trigger;
my $trigger = Trigger->new(
inline_states => {
heap => {}, # \%hash or \@array or \$scalar or \&sub or object
init => sub {
my $heap = shift;
# 初期処理
},
process => sub {
my $context = shift;
my $heap = $context->heap;
my @args = @_; # eval メソッドの引数
# メイン処理
},
trigger_and_action => [
sub { # trigger
my $context = shift;
my $heap = $context->heap;
my @args = @_; # 'process'の戻り値をパラメータとして受け取る
# トリガ(条件)を定義する
# 'trigger' は true or false が戻り値となるように定義する。
# false を戻り値としたい場合、return 0 としてはならない、
# false を戻り値としたい場合は、ただ単に return と書くこと。
# 例)defined $result ? return $result : return;
} => sub { # action
my $context = shift;
my $heap = $context->heap;
# 'trigger'の戻り値が true の時'action'が実行されます。
# トリガーの戻り値をパラメータとして受け取る
my @trigger_re = @_;
},
# 'trigger'と'action'は、対で定義する必要がある。
# 複数の'trigger'を定義することができます。
sub { # trigger
# :
} => sub { # action
# :
},
],
end => sub {
my $context = shift;
my $heap = $context->heap;
# 後処理
# 例えばファイルハンドルをClose、DBのdisconnectなど。
},
}
);
while ( @list ){
my @args = split /,/, $_;
my $result = $trigger->eval(@args) or last;
}
説明
条件(トリガ)がセットされる時、指定されたアクションは自動的に処理されるでしょう。 1つを越えるTriggerおよびアクションは定義することができます。
メソッド
new(%args)
トリガおよびアクションを定義します。
eval(@args)
通常 evalメソッドの戻り値は、'process' で処理した結果を返しますが、 'trigger' の条件が満たされた場合、'action'が実行され、'action'の結果が、evalメソッドの戻り値となります。 1つ以上のトリガが定義されている場合、最後に実行された'action'の結果が、evalメソッドの戻り値となります。
AUTHOR
Yuji Suzuki <yuji.suzuki.perl@gmail.com>
BUGS
Please report any bugs or feature requests to bug-trigger at rt.cpan.org
, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Trigger. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Trigger
perldoc Trigger::JA ;# 日本語ドキュメント
You can also look for information at:
RT: CPAN's request tracker
AnnoCPAN: Annotated CPAN documentation
CPAN Ratings
Search CPAN
ACKNOWLEDGEMENTS
COPYRIGHT & LICENSE
Copyright 2007 Yuji Suzuki, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.