my %domain_map; $domain_map{'yahoo.com'} = ...default setting for all of yahoo.com... $domain_map{'special.yahoo.com'} = ...special setting for special.yahoo.com... sub find_setting { my $domain = shift; # either from $ENV{HTTP_REFERER} or $ENV{REMOTE_HOST} my $setting; while (length($domain)) { defined($setting = $domain_map{$domain}) && last; $domain =~ s/^(.*?)(\.|\z)//; } return $setting; }