Since your programs are obviously decoupled enough, that
there is no problem to shell out via system() to use them,
I would change this only if you find that you are running
into performance problems (such as when doing the system
call frequently in a loop). After all, you already have your
prog*.pl and they work, so I would be reluctant to change
things without compelling reason. Also, it makes the prog*.pl be useful as individual pieces callable from the commandline - an advantage which you would loose when turning them into a sub.
In case you eventually think about adding a new prog134 to your existing set, you might, however, consider the following alternative:
Write a module SupaDupa134.pm containing the code of your new piece of marvel as a sub mynewsub134().
Use this module in your main application, where you can call the sub. In addition, write a standalone Perl program prog134.pl which doesn't do much more than
use SupaDupa134 qw(mynewsub134);
mynewsub134(@ARGV);
Doing this, you have all the advantages of a sub, plus a command line version for your own use, but still only one place to maintain the actual code.
HTH,
Ronald
Ronald Fischer <ynnor@mm.st>