Sub::Rate - Rate based sub dispatcher generator - metacpan.org 確率に応じて処理を振り分けたいというような要件をカジュアルにクリアできる感じになっております。 たとえばいわゆるガチャ的なものを考えたときに、 my $rate = Sub::Rate->new( max_rate => 100 ); $rate->add( 0.1, sub { say 'Super rare' }); # 0.1 % $rate->add( 3, sub { say 'Rare' }); # 3 % $rate->add( default => sub { 'Normal' }); # 残り my $func = $rate->generate; みたいな感じで関数を生成できて、この生成した $func は呼ぶと確率に応じて登録された関数を呼び出