I'd definitely benchmark this vs. calculating the tier on the fly each time (i.e., in this case, run it against
print int( ( $x % 50 ) / 10 );). Especially with a simple tier calculation, I would expect the hash lookup to take longer than (re)calculating on demand.
Using the precalculated hash would also be slower if the number of lookups isn't substantially larger than the number of precalculated values. If fewer lookups would be done, but the calculation is slower than a hash lookup, the better option would be to do no precalculation and instead do your lookups with
my $tier = $tiers{$n} //= calculate_tier($n);
which will calculate the tier for a value the first time it's requested, then return the calculated value from the hash on subsequent requests for that value. (Note that you'll need to use
||= instead of
//= if your
perl is older than 5.10.)