package My::App; use Moose; use Foo; sub run { my ($self, $cmd) = @_; if (Foo->meta->has_command($cmd)) { Foo->new->$cmd; } elsif ($cmd eq 'cmdlist') { print join ', ', map { $_->name } Foo->meta->get_all_commands; } }