in reply to hashing intervals
Your data could be expressed in an SQL (or SQLite) table with columns (low, high, value). If the problem were to be approached in this way, the values associated with an entire table-full of values-of-interest could be obtained using a simple INNER JOIN query, e.g.:
SELECT a.search_for, b.code
FROM table_of_values a
INNER JOIN table_of_ranges b
ON (a.search_for IS BETWEEN b.low AND b.high)
SORT BY a.search_for
Obviously, “it all depends on what you are doing and on the context in which you are doing it,” but this eliminates the need to “write a Perl program” altogether.