極端に言ったらアレやって、コレやって、やっぱ処理もどすわ。って感じなのがコールバック関数。
(進捗状態出すとか)
スポンサードリンク
いろいろ呼び出し方や、実行の方法があるのですが、手軽に単純に実装する方法をメモします。
もっと良い方法があったら教えてください。
実装例なので、これをコピペしても動作しないです。
◆呼び出し元
MyApp::dir(
DIR => ‘/var/www/trust/data/’, #必要なオプションとか
RCB => \&common, #コールバック関数を指定する
);
sub common{
・・・さむしんぐ・・・
return 1; #undefとか1とか返して、1ならテンポラリファイル削除とか
}
◆モジュールのほう
sub dir{
my %opt = @_; #\環境によってはmy($this, $opt)=@_;だっけ?とか
・・・さむしんぐ(だいたいループの中にいると思うけど)・・・
#コールバックを実行する $opt{RCB}();
my $ret = $opt{RCB}(“実行中の何かを渡しちゃうとか”);
#コールバックからの戻り値によってはテンポラリ消すとか
}
コメント