AnyEvent::Util::guard を使ってみる修行
AnyEvent::Util::guard を使ってみる。
use strict; use warnings; use AnyEvent::Util; sub gen { my $n = shift; my $guard = AnyEvent::Util::guard { print "terminated $n.\n"; }; print "created $n.\n"; $guard; } print "start\n"; { my $guard_0 = gen 0; my $guard_1 = gen 1; { my $guard_2 = gen 2; } # ここで 2 が破棄される undef $guard_0; # ここで 0 が破棄される my @queue = ( gen 3 ); } # ここで 1, 3 が破棄される print "end.\n";
実行結果。
[takeyuki@sunya ~]$ perl a.pl start created 0. created 1. created 2. terminated 2. terminated 0. created 3. terminated 1. terminated 3. end.