[% page.import({ title => "Perl Source", section => 'source', stub => '../', canonical => 'src/index.html', }); %]

Perl Source

Perl compiles on over 100 platforms, if you want to install from a binary instead see the ports page (especially for Windows).

[% TRY %]

How to install from source

[% latest_data = INSERT perl_version_latest_stable.json %] [% latest = JSON.json_decode(latest_data) %]
     wget [% latest.url %]
     tar -xzf [% latest.zip_file %]
     cd [% latest.distvname %]
     ./Configure -des -Dprefix=$HOME/localperl
     make
     make test
     make install

Read both INSTALL and README.yoursystem in the [% latest.distvname %] directory for more detailed information.

[% CATCH %] [% END %] [% TRY %]

Latest releases in each branch of Perl

[% json_data = INSERT perl_versions_latest.json %] [% versions = JSON.json_decode(json_data) %] [% FOREACH release = versions %] [% just_seen_latest = 1 IF release.latest %] [% END %]
Major Version Type Released Download
[% release.version_major %].[% release.version_minor %] [% release.version_major %].[% release.version_minor %].[% release.version_iota %] [% IF release.type != 'Maint'; release.type; ELSIF just_seen_latest; 'Maint'; just_seen_latest = 0; ELSE; release.latest ? 'Maint' : 'End of life'; END; %] [% release.released_date %] [% release.zip_file %]
[% CATCH %] [% END %]

Perl History

If you want to help out developing new releases of Perl visit the development site and join the perl5-porters mailing list.

Version scheme

Perl has used the following policy since the 5.6 release of Perl:

Please note that branches earlier than 5.20 are no longer supported, though fixes for urgent issues, for example severe security problems, may still be issued.

Note: please avoid referring to the "symbolic" source releases like "stable" and "latest", or "maint" and "devel". They are still used here but only for backward compatibility. The symbolic names were found to cause more confusion than they are worth because they don't really work with multiple branches, especially not with multiple maintenance branches, and especially the "latest" makes absolutely no sense. The "latest" and "stable" are now just aliases for "maint", and "maint" in turn is the maintenance branch with the largest release number.

[% TRY %]

First release in each branch of Perl

[% json_data = INSERT perl_versions_earliest.json %] [% versions = JSON.json_decode(json_data) %] [% FOREACH release = versions %] [% END %]
Major Version Released
[% release.version_major %].[% release.version_minor %] [% release.version_major %].[% release.version_minor %].[% release.version_iota %] [% release.released_date %]
[% CATCH %] [% END %]

Other files and directories (mostly for posterity)