in reply to Perl apps and version control
As JavaFan points out, packaging-systems and version-control systems are not the same thing. Be sure that you have a clear understanding of the differences, since it is likely that you will be using both.
If your servers are distant from one another, or not fully under your control, then a reasonable strategy is to prepare a distribution-package to install upon each of them. The package would be designed such that any and all of the necessary changes will take place in the process of installing the package.
An alternate, or companion, strategy is to use version control directly. On each server (perhaps as a regularly scheduled task?), you “synchronize” the production code libraries on the server with the latest (appropriately labeled as such...) production branch. The servers only synchronize (themselves) with the designated branch: they never contribute any changed code to it.
I say, “companion strategy” because, as you can see, you might need to do both things. Version-control might be used to synchronize-out a set of packages to all of the servers, which then must (automatically?) “install” those packages.
As always, check CPAN first. Do a thorough search for existing modules that will do all or part of what you want to do. (No matter what it is that you are doing, it has probably been done before.)