in reply to Module deployment across servers

Well, what a good way is depends on your infrastructure. Using NFS is great if you have a homogeneous environment. Note there's no need for setting PERL5LIB. For instance, you might want to share your entire /usr/local, and have perl installed in /usr/local. Or you install perl in /net/server/pkg/perl5, and replace your binary /usr/bin/perl with a symlink to /net/server/pkg/perl5/bin/perl. Now, such an action may require moving or reinstalling all your code. But you do it once, and from then on each deployment needs to be done only once. Even in an environment with different platforms sharing over NFS will work, although you'll need to link to different binaries. But the libraries can be shared, and deployment of new modules need to be done once for pure Perl modules, and once for each platform for XS modules. And if it's just the local stuff you worry about, you could just share your site_lib directory.

But if you don't go the NFS was, there's no need to do a make on every box you deploy on. Make it once for each platform, and distribute the created files. The distribution is fairly easy to automate, for instance by scp, or even using rsync and a cron job. (So you just build/install once for each platform, and the cron job takes care of syncing - a big advantage of using a cron job is that even machines that are down when you deploy will eventually get updated without having you to remind yourself - works great for laptops too).

I've used both techniques in the past succesfully - and not just for Perl.