in reply to sending multiple commands
The way to do this ... is to do what the shells do: spawn multiple processes and wait for all of them to complete. I suggest that you start your search with Parallel::ForkManager.
There are many more-sophisticated workflow management tools available, e.g. POE, so as you are contemplating your requirements try to articulate them carefully. It is very unlikely that you will have to “write anything new,” even when building a very complex application of this general type, so if you find yourself thinking that you do, step back and keep looking in http://search.cpan.org (and of course, right here).