Try::Tiny::Retry is awesome!

Perl で retry 処理を書くとき、Sub::Retry をよく使っていた。 これの唯一の不満がすべての retry が失敗ときの処理を書きたいとき、自分でキャッチするコードを書かなければいけないところだった。つまり

use Sub::Retry;

eval {
    retry 10, 1, sub {
        may_fail();
    };
};
if ($@) {
    # すべての retry が失敗したときの処理を書く。
}

のように書かなきゃいけない。

ところがTry::Tiny::Retry を使うと、

use Try::Tiny::Retry;

retry {
    may_fail();
} catch {
    # すべての retry が失敗したときの処理を書く。
};

のようにとてもすっきり書ける! awesome!