my (%passed, %failed, %untested); %passed = { MSIE50NT => 1, MSIE55NT => 1, URI_REDIRECT => 'http://passaddress/', }; # set %failed and %untested my $br_detect = 'palm'; # as found by HTTP::BrowserDetect if( defined $passed{$br_detect} ) { redirect( $passed{URI_REDIRECT} ) } if( defined $failed{$br_detect} ) { redirect( $failed{URI_REDIRECT} ) } defined $untested{$br_detect} ? '' : %untested{$br_detect} = 1; redirect( $untested{URI_REDIRECT} ); sub redirect { # your redirect logic here... }