#!/usr/bin/perl -w use strict; use warnings; sub action_124_to_140 { return 'Range 124 to 140, plus ...'; } sub action_089930_to_089999 { return 'Range 89930 to 89999'; } my $href_dispatch_table = { # Single Numbers: '01' => sub { return 'Geographic Numbers'; }, '02' => sub { return 'Geographic Numbers'; }, '055' => sub { return 'Corporate Numbers'; }, '071' => sub { return 'Mobile Services'; }, # ... and etc. # Ranges: # 124 to 140, 143 to 146, # 148 to 149, 160 to 169, and # 181 to 189 inclusive map { $_ => \&action_124_to_140 } ( 124 .. 140, 143 .. 146, 148 .. 149, 160 .. 169, 181 .. 189 ), # 089930 to 089999 inclusive map { $_ => \&action_89930_to_89999 } ( 89930 .. 89999 ), }; while () { chomp; if ( exists $href_dispatch_table->{$_} ) { print $_, "\t", $href_dispatch_table->{$_}->(); print "\n"; } else { print "\t\t\"$_\" does not exist in the dispatch table!\n"; } } __DATA__ 01 1 56 55 055 124 0124 0140 140 145 89930 89999 89963