sub log { ... } sub create { ... } my %commands = ( log => \&log, create => \&create, ... ); local $_ = $command; if (/^(\w+)/ && $commands{$1}) { &{$commands{$1}}(); } else { # Error } # Alternative: # # local $_ = $command; # if (/^(\w+)\s+(.*)/ && $commands{$1}) { # &{$commands{$1}}($1, $2); # } else { # # Error # }