in reply to alternatives to if and series of elsif

According to my tests, this seems to produce the same results. Some of the conditions may be a bit weird, but it matches the results provided (if the quota provided isn't greater than 24, we can probably simplify it).
use List::Util 'min'; sub compare { my ($points, $quota) = @_; my ($newquota) = int($points/2000) + 15; if ($newquota > $quota && $quota <= 24){ return min(24, $newquota); } return 15; }

Replies are listed 'Best First'.
Re^2: alternatives to if and series of elsif
by tlm (Prior) on Jul 02, 2005 at 04:51 UTC

    use List::Util 'min'; sub compare { my ($points, $quota) = @_; my ($newquota) = int($points/2000) + 15; if ($newquota > $quota && $quota <= 24){ return min(24, $newquota); } return 15; }

    For certain edge cases this compare gives results that differ from the OP's compare. For example, for points = 4000 and quota = 16, the original compare returns 15 while this one returns 17.

    the lowliest monk