my $dispatch = { ping => sub { return my_ping($_[0])}, traceroute => sub { return my_traceroute($_[0])}, etc. => }; foreach (@commands) { $dispatch->{$_}->($q->param('val')) if (defined $q->param(uc($_))); }