use strict; use warnings; my $kDone = 0.95; my $kPivot = 100; my $kDelta = 0.2; for my $pair ( [10000, 9500], [1400, 1389], [100, 90], [100, 80], [10, 8], [10, 7], [5, 4], [2, 1], [1, 0] ) { my ($toDo, $done) = @$pair; next if !$toDo; my $ratio = $done / $toDo; my $adjusted = $kDone - ($kDelta - $toDo / ($kPivot + $toDo) * $kDelta); printf "%5d %5d %5.2f %5.2f %s\n", $toDo, $done, $adjusted, $ratio, $ratio > $adjusted ? 'Done' : 'Working'; }