$Commands{'who'} = [ { 'pattern' => '^who (.+)$', #' 'mudindex' => 1, 'commandi2' => sub { @args = ($1, 'who'); print Dumper(\@args);}, 'commandi3' => sub { @args = ('who-req', getUser(), $1); print Dumper(\@rgs);}, 'syntax' => 'who ' }, { 'pattern' => '^who$', #' 'command' => sub { who_local($userid); }, 'syntax' => 'who' }]; .... my @command = @{$Commands{$com}}; my @args = (); foreach my $commands (@command) { debug("commands: " . Dumper($commands)); ... if(my @res = $input =~ /$commands->{'pattern'}/) { debug("results: " . Dumper(\@res)); if($commands->{'mudindex'}) { ... $commands->{'commandi2'}->(); debug("ARGS: " . Dumper(\@args)); my $result = $i2->send($Users{$userid}{'user'}, @args);