First, make sure you have an up-to-date version of Perl. If you
didn't get your Perl source from CPAN, check the latest version at
First, make sure you have an up-to-date version of Perl. If you
didn't get your Perl source from CPAN, check the latest version at
subreleases (like 5.8.x and 5.10.x) are stable maintenance releases and
odd-numbered subreleases (like 5.7.x and 5.9.x) are unstable
development releases. Development releases should not be used in
subreleases (like 5.8.x and 5.10.x) are stable maintenance releases and
odd-numbered subreleases (like 5.7.x and 5.9.x) are unstable
development releases. Development releases should not be used in
-The above commands will install Perl to /usr/local (or some other
-platform-specific directory -- see the appropriate file in hints/.)
+The above commands will install Perl to F</usr/local> (or some other
+platform-specific directory -- see the appropriate file in F<hints/>.)
If that's not okay with you, you can run Configure interactively, by
just typing "sh Configure" (without the -de args). You can also specify
If that's not okay with you, you can run Configure interactively, by
just typing "sh Configure" (without the -de args). You can also specify
To explicitly name the perl binary, use the command
"make install PERLNAME=myperl".
To explicitly name the perl binary, use the command
"make install PERLNAME=myperl".
These options, and many more, are explained in further detail below.
If you're building perl from a git repository, you should also consult
These options, and many more, are explained in further detail below.
If you're building perl from a git repository, you should also consult
circumstance.
If you have problems, corrections, or questions, please see
L<"Reporting Problems"> below.
For information on what's new in this release, see the
circumstance.
If you have problems, corrections, or questions, please see
L<"Reporting Problems"> below.
For information on what's new in this release, see the
specific detail about changes, see the Changes file.
=head1 DESCRIPTION
This document is written in pod format as an easy way to indicate its
specific detail about changes, see the Changes file.
=head1 DESCRIPTION
This document is written in pod format as an easy way to indicate its
read it as is with any pager or editor. Headings and items are marked
by lines beginning with '='. The other mark-up used is
read it as is with any pager or editor. Headings and items are marked
by lines beginning with '='. The other mark-up used is
In addition to this file, check if there is a README file specific to
your operating system, since it may provide additional or different
instructions for building Perl. If there is a hint file for your
In addition to this file, check if there is a README file specific to
your operating system, since it may provide additional or different
instructions for building Perl. If there is a hint file for your
for even more information.
For additional information about porting Perl, see the section on
for even more information.
For additional information about porting Perl, see the section on
potential incompatibilities introduced with this release. A few of
the most important issues are listed below, but you should refer
potential incompatibilities introduced with this release. A few of
the most important issues are listed below, but you should refer
B<WARNING:> This version is not binary compatible with earlier versions
of Perl. If you have built extensions (i.e. modules that include C code)
B<WARNING:> This version is not binary compatible with earlier versions
of Perl. If you have built extensions (i.e. modules that include C code)
On a related issue, old modules may possibly be affected by the changes
in the Perl language in the current release. Please see
On a related issue, old modules may possibly be affected by the changes
in the Perl language in the current release. Please see
installed copy of the perllocal.pod file for a (possibly incomplete)
list of locally installed modules. Also see the L<CPAN> module's
C<autobundle> function for one way to make a "bundle" of your currently
installed copy of the perllocal.pod file for a (possibly incomplete)
list of locally installed modules. Also see the L<CPAN> module's
C<autobundle> function for one way to make a "bundle" of your currently
=item Installation prefix
By default, for most systems, perl will be installed in
=item Installation prefix
By default, for most systems, perl will be installed in
and L<"Coexistence with earlier versions of perl 5"> below for
further details.)
You can specify a different 'prefix' for the default installation
directory when Configure prompts you, or by using the Configure command
and L<"Coexistence with earlier versions of perl 5"> below for
further details.)
You can specify a different 'prefix' for the default installation
directory when Configure prompts you, or by using the Configure command
sh Configure -Dprefix=/opt/perl
If your prefix contains the string "perl", then the suggested
directory structure is simplified. For example, if you use
sh Configure -Dprefix=/opt/perl
If your prefix contains the string "perl", then the suggested
directory structure is simplified. For example, if you use
-prefix=/opt/perl, then Configure will suggest /opt/perl/lib instead of
-/opt/perl/lib/perl5/. Again, see L<"Installation Directories"> below
-for more details. Do not include a trailing slash, (i.e. /opt/perl/)
+C<prefix=/opt/perl>, then Configure will suggest F</opt/perl/lib> instead of
+F</opt/perl/lib/perl5/>. Again, see L<"Installation Directories"> below
+for more details. Do not include a trailing slash, (i.e. F</opt/perl/>)
or you may experience odd test failures.
NOTE: You must not specify an installation directory that is the same
as or below your perl source directory. If you do, installperl will
attempt infinite recursion.
or you may experience odd test failures.
NOTE: You must not specify an installation directory that is the same
as or below your perl source directory. If you do, installperl will
attempt infinite recursion.
-find it. It's often a good idea to have both /usr/bin/perl and
-/usr/local/bin/perl be symlinks to the actual binary. Be especially
+find it. It's often a good idea to have both F</usr/bin/perl> and
+F</usr/local/bin/perl> be symlinks to the actual binary. Be especially
careful, however, not to overwrite a version of perl supplied by your
vendor unless you are sure you know what you are doing. If you insist
on replacing your vendor's perl, useful information on how it was
careful, however, not to overwrite a version of perl supplied by your
vendor unless you are sure you know what you are doing. If you insist
on replacing your vendor's perl, useful information on how it was
spaces in arguments to Configure. For that, you have to look carefully
at config_arg1, config_arg2, etc.)
spaces in arguments to Configure. For that, you have to look carefully
at config_arg1, config_arg2, etc.)
$version is the full perl version number, including subversion, e.g.
5.12.3, and $archname is a string like sun4-sunos,
determined by Configure. The full definitions of all Configure
$version is the full perl version number, including subversion, e.g.
5.12.3, and $archname is a string like sun4-sunos,
determined by Configure. The full definitions of all Configure
Note that a perl built with -DDEBUGGING will be much bigger and will run
much, much more slowly than a standard perl.
Note that a perl built with -DDEBUGGING will be much bigger and will run
much, much more slowly than a standard perl.
By default, Configure will offer to build every extension which appears
to be supported. For example, Configure will offer to build GDBM_File
By default, Configure will offer to build every extension which appears
to be supported. For example, Configure will offer to build GDBM_File
subdirectory. Porting/Glossary should especially come in handy.
Ports for other systems may also be available. You should check out
subdirectory. Porting/Glossary should especially come in handy.
Ports for other systems may also be available. You should check out
various other operating systems.
If you plan to port Perl to a new architecture, study carefully the
various other operating systems.
If you plan to port Perl to a new architecture, study carefully the
Perl can be cross-compiled. It is just not trivial, cross-compilation
rarely is. Perl is routinely cross-compiled for several platforms: as of
Perl can be cross-compiled. It is just not trivial, cross-compilation
rarely is. Perl is routinely cross-compiled for several platforms: as of
-January 2014, these include Android, Blackberry 10, PocketPC aka
-WinCE, ARM Linux, and Solaris. Previous versions of
+June 2019, these include Android, Blackberry 10,
+ARM Linux, and Solaris. Previous versions of
Perl also provided support for Open Zaurus, Symbian, and
the IBM OS/400, but it's unknown if those ports are still functional.
These platforms are known as the B<target> platforms, while the systems
Perl also provided support for Open Zaurus, Symbian, and
the IBM OS/400, but it's unknown if those ports are still functional.
These platforms are known as the B<target> platforms, while the systems
modules to the target platform is also left up to the each
cross-compilation environment. Often the cross-compilation target
platforms are somewhat limited in diskspace: see the section
modules to the target platform is also left up to the each
cross-compilation environment. Often the cross-compilation target
platforms are somewhat limited in diskspace: see the section
of files required for a functional Perl installation.
For some cross-compilation environments the Configure option
of files required for a functional Perl installation.
For some cross-compilation environments the Configure option
If you are unsure what makes a good bug report please read "How to
report Bugs Effectively" by Simon Tatham:
If you are unsure what makes a good bug report please read "How to
report Bugs Effectively" by Simon Tatham:
In other words, you will have to recompile your XS modules.
In general, you can usually safely upgrade from one version of Perl
In other words, you will have to recompile your XS modules.
In general, you can usually safely upgrade from one version of Perl
libraries after 5.6.0, but not for executables. TODO?) One convenient
way to do this is by using a separate prefix for each version, such as
libraries after 5.6.0, but not for executables. TODO?) One convenient
way to do this is by using a separate prefix for each version, such as
may also wish to add a symbolic link /usr/local/bin/perl so that
scripts can still start with #!/usr/local/bin/perl.
may also wish to add a symbolic link /usr/local/bin/perl so that
scripts can still start with #!/usr/local/bin/perl.
earlier Perl releases.> Perl modules having binary parts
(meaning that a C compiler is used) will have to be recompiled to be
earlier Perl releases.> Perl modules having binary parts
(meaning that a C compiler is used) will have to be recompiled to be
-used with 5.29.4. If you find you do need to rebuild an extension with
-5.29.4, you may safely do so without disturbing the older
+used with 5.31.3. If you find you do need to rebuild an extension with
+5.31.3, you may safely do so without disturbing the older
- ./lib/perl5/5.29.4/strict.pm
- ./lib/perl5/5.29.4/warnings.pm
- ./lib/perl5/5.29.4/i686-linux/File/Glob.pm
- ./lib/perl5/5.29.4/feature.pm
- ./lib/perl5/5.29.4/XSLoader.pm
- ./lib/perl5/5.29.4/i686-linux/auto/File/Glob/Glob.so
+ ./lib/perl5/5.31.3/strict.pm
+ ./lib/perl5/5.31.3/warnings.pm
+ ./lib/perl5/5.31.3/i686-linux/File/Glob.pm
+ ./lib/perl5/5.31.3/feature.pm
+ ./lib/perl5/5.31.3/XSLoader.pm
+ ./lib/perl5/5.31.3/i686-linux/auto/File/Glob/Glob.so
Secondly, for perl-5.10.1, the Debian perl-base package contains 591
files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
Secondly, for perl-5.10.1, the Debian perl-base package contains 591
files, (of which 510 are for lib/unicore) totaling about 3.5MB in its
build process. Type B<man perl> to get started. Alternatively, you
can type B<perldoc perl> to use the supplied perldoc script. This is
sometimes useful for finding things in the library modules.
build process. Type B<man perl> to get started. Alternatively, you
can type B<perldoc perl> to use the supplied perldoc script. This is
sometimes useful for finding things in the library modules.