Hachioji.pm#12で発表したネタです。Data::WeightedRoundRobin使ったら、rand使うようなコードが、いい感じにすっきり見やすくかけましたよーという話です。 嫌なコードの概要 要件 「以下のような感じで、実行する処理をランダムで変更してよ!」って要件がたまにありますね。 3割の確率でhogeを実行 3割の確率でmogeを実行 2割の確率でfooを実行 1割の確率でbarを実行 1割の確率でjarを実行 ファクトリーメソッドパターン的な実装ですね。 ごにょごにょするとこんな感じの実装に my $rand = rand(); my $method; if($rand < 0.3){ $method = 'hoge';#3割 }elsif($rand >= 0.3 && $rand < 0.6){ $method = 'moge';#3割 }elsif($rand