Sub-Retry-0.04 > Sub::Retry

名前

Sub::Retry - retry $n times

Sub::Retry - $n回繰り返す

概要

    use Sub::Retry;
    use LWP::UserAgent;

    my $ua = LWP::UserAgent->new();
    my $res = retry 3, 1, sub {
        $ua->post('http://example.com/api/foo/bar');
    };

説明

Sub::Retry provides the function named 'retry'.

Sub::Retryは 'retry'関数を提供します.

関数

retry($n_times, $delay, \&code [, \&retry_if])

This function calls \&code. If the code throws exception, this function retry $n_times after $delay seconds.

Return value of this function is the return value of \&code. This function cares wantarray.

You can also customize the retry condition. In that case \&retry_if specify coderef. The coderef arguments is return value the same. (Default: retry condition is throws exception)

    use Sub::Retry;
    use Cache::Memcached::Fast;

    my $cache = Cache::Memcached::Fast->new(...);
    my $res = retry 3, 1, sub {
        $cache->get('foo');
    } sub {
        my $res = shift;
        defined $res ? 0 : 1;
    };
retry($n_times, $delay, \&code [, \&retry_if])

\&codeを呼び出します. もし例外が投げられた場合, $delay秒後ごとに $n_times回リトライします.

この関数の戻り値は \&codeの戻り値となります. wantarrayは考慮されます.

リトライの条件をカスタマイズすることが可能で, \&retry_ifコードリファレンスを使います. コードリファレンスの引数は, 戻り値と同じです. (デフォルトでは例外が投げられたときにリトライします).

    use Sub::Retry;
    use Cache::Memcached::Fast;

    my $cache = Cache::Memcached::Fast->new(...);
    my $res = retry 3, 1, sub {
        $cache->get('foo');
    } sub {
        my $res = shift;
        defined $res ? 0 : 1;
    };

作者

Tokuhiro Matsuno <tokuhirom AAJKLFJEF GMAIL COM>

ライセンス

Copyright (C) Tokuhiro Matsuno

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.