以下のような、えらく時間のかかるロジックがあったとします。
sub slow_logic {
sleep int( rand( 40 ) ) + 10;
'OK';
}
で、例えばこのロジックを実行したときに、30秒以内に処理が終わらなければ強制的処理を終わらせundefを返すようにしたい、という場合は
use Data::Dumper;
use Time::Out qw( timeout );
my $logic = timeout 30 => \&slow_logic;
print Dumper $logic;
とします。
実行結果は下記の通り。
# time perl ./hoge.pl
$VAR1 = undef;
real 0m30.142s
user 0m0.130s
sys 0m0.010s
# time perl ./hoge.pl
$VAR1 = 'OK';
real 0m21.153s
user 0m0.130s
sys 0m0.020s
0 件のコメント:
コメントを投稿