Download the latest Perl source tar file from http://ftp.funet.fi/pub/CPAN/src/. Make sure you get the source files for a stable release (the last digit in the release number will be even, e.g. 5.8.8). Untar the tar file in the top level source directory (e.g. /rpm/perl):
tar -xvzf perl-m.n.xx.tar.gz
The tar command will create a new directory for the m.n.xx version of Perl. Switch to that directory and begin configuring Perl:
sh Configure
Or, if you are starting over with a preexisting build, restart the configuration process by doing:
rm -f config.sh Policy.sh sh Configure
The configuration script will ask you a lot of questions. Many of them are about where it should put things. Here are some hints:
Top-level directory: /usr/lib/perl5/m.n.xx Site directory: /usr/lib/perl5/site_perl/m.n.xx Vendor directory: /usr/lib/perl5/vendor_perl/m.n.xx HTML docs: /usr/share/doc/perl-m.n.xx Manuals (mistakenly called POD source): /usr/share/man Binaries and scripts: /usr/bin
You may have to hack the generated config.sh at the end of the configuration process to make sure that it is correct. Despite my picking path names like these during configuration, it still got them wrong. Couldn't hurt to check.
Once configure is done, make and test the Perl interpreter:
make make test
If all the tests are passed, switch to super-duper user and install Perl:
su make install
If you'll want to use the Perl documentation from a Web browser, you need to build the HTML files from the POD files. Note that this step does not read the destination directories from the config file, despite they're being in there:
./installhtml --podroot=. --podpath=lib:ext:pod:vms --recurse --htmldir=/usr/share/doc/perl-m.n.xx --htmlroot=/doc/perl-m.n.xx --splithead=pod/perlipc --splititem=pod/perlfunc --libpods=perlfunc:perlguts:perlvar:perlrun:perlop --verbose
This command assumes that you have an HTML directory named /doc that actually points to /usr/share/doc. If your httpd.conf file has some other definition for the /doc directory, you'll need to use that instead.