The company that I work for develops and supports a web app (and some other associated technologies) that is used throughout the newspaper industry. We develop and support this app in-house and distribute it to customers who run their own copies on their servers & internal systems. We're not a hosting company. Our cash-flow comes from the customization & support of this application to suit individual workflows; we don't make money from the actual app per-se.
Our development team makes heavy use of the more mature CPAN modules (and a few which aren't quite as mature) and ran into deployment issues related to CPAN usage early on in our project.
Our final solution was to package the required modules (and whatnot) along with our application and to develop an installation system that automatically compiles & installs pre-requisites in a sub-directory of our chosing (i.e. /opt/oursoftware-1.0).
It isn't perfect but it's a whole lot easier for our customers to manage (not to mention our in-house teams) and has huge benefits from a support perspective. We require of our customers a particular OS and provide a customized operating environment for our applications. This allows us to customize the various pieces of middleware while avoiding all of the sticky issues that arise from having to deal with software installed by another vendor. A shared environment for applications is wonderful but only in situations where you have complete control the environment. Our software often runs on dedicated servers but there are some situations where we have to share server space with other vendors and believe me when I say that you do NOT want to be responsible for downtime in a newspaper setting, particularly when you are involved with pre-press ad management.