#! perl -slw use strict; sub compare { my ($points, $quota) = @_; if ($points > 18000 && $quota < 24) { return 24; } elsif ($points > 16000 && $quota < 23) { return 23; } elsif ($points > 14000 && $quota < 22) { return 22; } elsif ($points > 12000 && $quota < 21) { return 21; } elsif ($points > 10000 && $quota < 20) { return 20; } elsif ($points > 8000 && $quota < 19) { return 19; } elsif ($points > 6000 && $quota < 18) { return 18; } elsif ($points > 4000 && $quota < 17) { #19 return 17; } elsif ($points > 2000 && $quota < 16) { #17 return 16; } return 15; } my $userQuota = 0; for my $userPoints ( map{ $_ * 1000 } 0 .. 19 ) { printf "Before: %5d : %5d", $userPoints, $userQuota; $userQuota = compare( $userPoints, $userQuota ); printf " After: %5d : %5d\n", $userPoints, $userQuota; } __END__ P:\test>471983 Before: 0 : 0 After: 0 : 15 Before: 1000 : 15 After: 1000 : 15 Before: 2000 : 15 After: 2000 : 15 Before: 3000 : 15 After: 3000 : 16 Before: 4000 : 16 After: 4000 : 15 Before: 5000 : 15 After: 5000 : 17 Before: 6000 : 17 After: 6000 : 15 Before: 7000 : 15 After: 7000 : 18 Before: 8000 : 18 After: 8000 : 15 Before: 9000 : 15 After: 9000 : 19 Before: 10000 : 19 After: 10000 : 15 Before: 11000 : 15 After: 11000 : 20 Before: 12000 : 20 After: 12000 : 15 Before: 13000 : 15 After: 13000 : 21 Before: 14000 : 21 After: 14000 : 15 Before: 15000 : 15 After: 15000 : 22 Before: 16000 : 22 After: 16000 : 15 Before: 17000 : 15 After: 17000 : 23 Before: 18000 : 23 After: 18000 : 15 Before: 19000 : 15 After: 19000 : 24