http://qs321.pair.com?node_id=471770


in reply to alternatives to if and series of elsif

I prefer davidrw's map method, for this comparision, but in case anyone stumbles upon this and wants an alternative - you can use a hash instead:

my ($points, $quota) = @_; my %compare = ( 18000 => 24, 16000 => 23, 14000 => 22, ... ); for my $key (sort {$b <=> $a} keys %compare) { if ($points > $key and $quota < $compare{$key}) { return $compare{key}; } } return 15;

Check out QM's reply for a better example

Update: it doesn't work for 16626 => 21, because it assumes the keys increment in conjuction with the values, which 16626 => 21 breaks. Added link.

"Cogito cogito ergo cogito sum - I think that I think, therefore I think that I am." Ambrose Bierce