my %Mode = ( default => \&default, something => \&something, another => \&another ); if(exists($Mode{$q->param('mode')})) { $Mode{$q->param('mode')}->(); #call the correct subroutine }else{ &default; }