=encoding utf8
=head1 NAME
Sub::ScopeFinalizer - execute a code on exiting scope.
J<< ja;Sub::ScopeFinalizer - スコープ終了時にコードを実行 >>
=head1 VERSION
Version 0.02
=head1 SYNOPSIS
use Sub::ScopeFinalizer qw(scope_finalizer);
{
my $anchor = scope_finalizer { print "put clean up code here.\n"; };
print "running block.\n";
}
=head1 DESCRIPTION
Sub::ScopeFinalizer invoke BLOCK, triggered by leaving a scope.
It is similar to destructor or finally clause.
J<< ja;
Sub::ScopeFinalizer は, スコープを抜けるのに合わせて BLOCK の
実行を行います. これはデストラクタや例外機構での finally 節と
似ています.
>>
=head1 EXPORT
This module exports one function, C<scope_finalizer>.
J<< ja;
このモジュールは関数を1つ, C<scope_finalizer> をエクスポートします.
>>
=head1 FUNCTION
=head2 scope_finalizer
$o = scope_finalizer BLOCK;
$o = scope_finalizer BLOCK { args =>[...] };
Create a finalizer object.
This is shortcut to invoke C<< Sub::ScopeFinalizer->new(...) >>.
J<<<< ja;
後始末オブジェクトを生成します. これは C<< Sub::ScopeFinalizer->new(...) >>
と同じです.
>>>>
BLOCK will be executed when object is destroyed.
In other words, process just exits a scope which object is binded on.
J<< ja;
BLOCK はオブジェクトが破棄されたときに実行されます.
つまり, コードの実行がオブジェクトのバインドされている
スコープを抜けたその時に実行されます.
>>
Second argument is optional hashref.
$opts->{args} can contain argument for BLOCK as ARRAYref.
J<< ja;
2番目の引数として任意でハッシュリファレンスを渡せます.
$opts->{args} に BLOCK を実行するときの引数を配列のリファレンス
として渡せれます.
>>
If you only call this function without bind, BLOCK is executed
immediately because object is destroyed as soon as return from function.
Don't forget to bind.
J<< ja;
もしこの関数の復帰値をバインドせず単に呼び出したときには,
オブジェクトは関数から戻るとすぐに破棄されるため BLOCK も
すぐに起動されてしまいます. バインドは忘れずに.
>>
=head1 CONSTRUCTOR
=head2 $pkg->new(CODEref);
=head2 $pkg->new(CODEref, HASHref);
Create a finalizer object.
You must bind it with variable on scope.
J<< ja;
後始末オブジェクトの生成.
復帰値をスコープ内の変数にバインドするのを忘れずに.
>>
See L</scope_finalizer>.
J<< ja;
詳細は L</scope_finalizer> を参照.
>>
=head1 METHODS
=head2 $obj->raise();
$obj->raise();
$obj->raise({args=>[...]});
Invoke finalizer before it run automatically.
This method disables default invokation on scope leaving.
J<< ja;
自動的に呼ばれるのより前に後始末コードを起動します.
このメソッドを呼ぶとスコープを抜けたときの起動は無効に
なります.
>>
This method takes one argument as optional hashref.
$opts->{args} can contain argument for BLOCK as ARRAYref.
if $opts->{args} is passed, args parameter on constructor
is ignored.
J<< ja;
引数として任意でハッシュリファレンスを渡せます.
$opts->{args} に BLOCK を実行するときの引数を配列のリファレンス
として渡せれます. $opts->{args} を渡したときはコンストラクタの
args パラメータは無視されます.
>>
=head2 $obj->disable();
$obj->disable();
$obj->disable($flag);
Turn off BLOCK invoking.
If optional argument $flag is passwd and it is false,
cancel disabling, that is, enable invoking.
J<< ja;
BLOCK の起動を無効にします.
引数 $flag に偽を渡すと無効化を解除, つまり
呼び出しを再度有効にします.
>>
=head1 AUTHOR
YAMASHINA Hio, C<< <hio at cpan.org> >>
J<< ja;
山科 氷魚 (YAMASHINA Hio), C<< <hio at cpan.org> >>
>>
=head1 BUGS
Please report any bugs or feature requests to
C<bug-sub-scopescope_finalizer at rt.cpan.org>, or through the web interface at
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Sub-ScopeFinalizer>.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
J<< ja;
バグや要望は C<bug-sub-scopescope_finalizer at rt.cpan.org> 宛に
報告してください. 若しくは
L<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Sub-ScopeFinalizer>.
にある web インターフェースからでもかまいません.
そこから私に通知され, そして私が変更を行うことで報告頂いたバグの進捗を
自動的にあなたに伝えるでしょう.
>>
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
J<< ja;
このモジュールのドキュメントは perldoc コマンドで見ることが出来ます.
>>
perldoc Sub::ScopeFinalizer
You can also look for information at:
J<< ja;
また, 以下の場所でも見ることが出来ます:
>>
=over 4
=item * AnnoCPAN: Annotated CPAN documentation
L<http://annocpan.org/dist/Sub-ScopeFinalizer>
=item * CPAN Ratings
L<http://cpanratings.perl.org/d/Sub-ScopeFinalizer>
=item * RT: CPAN's request tracker
L<http://rt.cpan.org/NoAuth/Bugs.html?Dist=Sub-ScopeFinalizer>
=item * Search CPAN
L<http://search.cpan.org/dist/Sub-ScopeFinalizer>
=back
=head1 ACKNOWLEDGEMENTS
=head1 COPYRIGHT & LICENSE
Copyright 2006 YAMASHINA Hio, all rights reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.
J<< ja;
このプログラムはフリーソフトウェアです。あなたは Perl と同じ
ライセンスの 元で再配布及び変更を行うことが出来ます.
>>