BernieC has asked for the wisdom of the Perl Monks concerning the following question:
I know this topic keeps coming up. In fact, the topic has been kind of an open question for at least 25 years now with many and varied almost-solutions that never seemed quite to work. I know it has been discussed here, but I think the newest thread on it is several years old. What's the current state of making self-contained perl executable programs? I can think of two variations here: one is a complete executable, the other is one that only depends on their being a perl interpreter {but doesn't depend on any local module installs}. I'm asking because I have a bunch of perl programs that I've been asked to make available over the web. Problem: i have no install privileges on the web server and it is a unix system. I can develop a full CGI version of my program here on my windows PC {I have a local web server on localhost:80 {that currently is making the wonderful Pod::Pom package available}} and it'd be very handy if there was as little hassle as possible taking a working CGI program from my environment on my PC and plunking it down in the cgi-bin on the server and have it mostly all work.
I think the current options are roughly as follows:
Par::Packer - this packages your current Perl executable together with your script and all required modules and creates a single (large) binary. Ideally, you can just drop this binary somewhere and run it, but the drawback is that PAR still unpacks the files to a temp directory and runs them there. Depending on the target system and file creation permissions, this may be problematic.
App::Staticperl - this compiles a custom Perl with all C and Perl dependencies included, which will then run your script from the same file. The drawback is that this is a shell script and needs a Linuxish environment to work.
App::FatPacker - this packages your Perl script and all required (pure Perl) modules into one file that you can just use with whatever Perl is on the remote machine. Ideally, you can just drop this file somewhere and run it, but the drawback is that Perl and Perl modules needing C compilation will need to be installed on the target machine already.