If you read this file _as_is_, just ignore the funny characters you see.
-It is written in the POD format (see pod/perlpod.pod) which is specially
+It is written in the POD format (see F<pod/perlpod.pod>) which is specially
designed to be readable as is.
=head1 NAME
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
-http://www.cpan.org/src/. Perl uses a version scheme where even-numbered
+L<http://www.cpan.org/src/>. Perl uses a version scheme where even-numbered
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
Each of these is explained in further detail below.
-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
-any prefix location by adding "-Dprefix='/some/dir'" to Configure's args.
+any prefix location by adding C<"-Dprefix='/some/dir'"> to Configure's args.
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
-the documentation in pod/perlgit.pod for information on that special
+the documentation in F<pod/perlgit.pod> for information on that special
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
-pod/perldelta.pod file. For more information about how to find more
+F<pod/perldelta.pod> file. For more information about how to find more
specific detail about changes, see the Changes file.
=head1 DESCRIPTION
This document is written in pod format as an easy way to indicate its
-structure. The pod format is described in pod/perlpod.pod, but you can
+structure. The pod format is described in F<pod/perlpod.pod>, but you can
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
-system (in the hints/ directory) you might also want to read it
+system (in the F<hints/> directory) you might also want to read it
for even more information.
For additional information about porting Perl, see the section on
-L<"Porting information"> below, and look at the files in the Porting/
+L<"Porting information"> below, and look at the files in the F<Porting/>
directory.
=head1 PRELIMINARIES
=head2 Changes and Incompatibilities
-Please see pod/perldelta.pod for a description of the changes and
+Please see F<pod/perldelta.pod> for a description of the changes and
potential incompatibilities introduced with this release. A few of
the most important issues are listed below, but you should refer
-to pod/perldelta.pod for more detailed information.
+to F<pod/perldelta.pod> for more detailed information.
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
-pod/perldelta.pod for a description of what's changed. See your
+F<pod/perldelta.pod> for a description of what's changed. See your
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
Configure -h
-to get a listing. See the Porting/Glossary file for a complete list of
+to get a listing. See the F<Porting/Glossary> file for a complete list of
Configure variables you can set and their definitions.
=over 4
=item Installation prefix
By default, for most systems, perl will be installed in
-/usr/local/{bin, lib, man}. (See L<"Installation Directories">
+F</usr/local/>{F<bin>, F<lib>, F<man>}. (See L<"Installation Directories">
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
-line option -Dprefix='/some/directory', e.g.
+line option C<-Dprefix='/some/directory'>, e.g.
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.
-=item /usr/bin/perl
+=item F</usr/bin/perl>
It may seem obvious, but Perl is useful only when users can easily
-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
spaces in arguments to Configure. For that, you have to look carefully
at config_arg1, config_arg2, etc.)
-By default, Configure will not try to link /usr/bin/perl to the current
+By default, Configure will not try to link F</usr/bin/perl> to the current
version of perl. You can turn on that behavior by running
Configure -Dinstallusrbinperl
requires 1k of storage per character it can hash, and it must populate that
storage with 256 32-bit random values as well. In practice the RNG we use
for seeding the SBOX32 storage is very efficient and populating the table
-required for hashing even fairly long keys is negligble as we only do it
+required for hashing even fairly long keys is negligible as we only do it
during startup. By default we build with SBOX32 enabled, but you change that
by setting
=item Directories for the perl distribution
-By default, Configure will use the following directories for 5.29.3.
+By default, Configure will use the following directories for 5.31.2.
$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
=back
If you are using a shared libperl, see the warnings about multiple
-versions of perl under L<Building a shared Perl library>.
+versions of perl under L</Building a shared Perl library>.
Note that a perl built with -DDEBUGGING will be much bigger and will run
much, much more slowly than a standard perl.
=head2 Extensions
Perl ships with a number of standard extensions. These are contained
-in the ext/ subdirectory.
+in the F<ext/> subdirectory.
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
-http://www.cpan.org/ports for current information on ports to
+L<http://www.cpan.org/ports> for current information on ports to
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
-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
=over 4
-=item WinCE/PocketPC
-
-L<README.ce or perlce|perlce>
-
=item Android
L<"Cross-compilation" in README.android or
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
-L<Minimizing the Perl installation> to learn more of the minimal set
+L</Minimizing the Perl installation> to learn more of the minimal set
of files required for a functional Perl installation.
For some cross-compilation environments the Configure option
-C<-Dinstallprefix=...> might be handy, see L<Changing the installation
+C<-Dinstallprefix=...> might be handy, see L</Changing the installation
directory>.
About the cross-compilation support of Configure: There's two forms.
If you are unsure what makes a good bug report please read "How to
report Bugs Effectively" by Simon Tatham:
-http://www.chiark.greenend.org.uk/~sgtatham/bugs.html
+L<http://www.chiark.greenend.org.uk/~sgtatham/bugs.html>
=head1 Coexistence with earlier versions of perl 5
-Perl 5.29.3 is not binary compatible with earlier versions of Perl.
+Perl 5.31.2 is not binary compatible with earlier versions 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
- sh Configure -Dprefix=/opt/perl5.29.3
+ sh Configure -Dprefix=/opt/perl5.31.2
-and adding /opt/perl5.29.3/bin to the shell PATH variable. Such users
+and adding /opt/perl5.31.2/bin to the shell PATH variable. Such users
may also wish to add a symbolic link /usr/local/bin/perl so that
scripts can still start with #!/usr/local/bin/perl.
subversions may not have all the compatibility wrinkles ironed out
yet.
-=head2 Upgrading from 5.28.0 or earlier
+=head2 Upgrading from 5.31.1 or earlier
-B<Perl 5.29.3 may not be binary compatible with Perl 5.28.0 or
+B<Perl 5.31.2 may not be binary compatible with Perl 5.31.1 or
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.3. If you find you do need to rebuild an extension with
-5.29.3, you may safely do so without disturbing the older
+used with 5.31.2. If you find you do need to rebuild an extension with
+5.31.2, you may safely do so without disturbing the older
installations. (See L<"Coexistence with earlier versions of perl 5">
above.)
print("$f\n");
}
-in Linux with perl-5.29.3 is as follows (under $Config{prefix}):
+in Linux with perl-5.31.2 is as follows (under $Config{prefix}):
./bin/perl
- ./lib/perl5/5.29.3/strict.pm
- ./lib/perl5/5.29.3/warnings.pm
- ./lib/perl5/5.29.3/i686-linux/File/Glob.pm
- ./lib/perl5/5.29.3/feature.pm
- ./lib/perl5/5.29.3/XSLoader.pm
- ./lib/perl5/5.29.3/i686-linux/auto/File/Glob/Glob.so
+ ./lib/perl5/5.31.2/strict.pm
+ ./lib/perl5/5.31.2/warnings.pm
+ ./lib/perl5/5.31.2/i686-linux/File/Glob.pm
+ ./lib/perl5/5.31.2/feature.pm
+ ./lib/perl5/5.31.2/XSLoader.pm
+ ./lib/perl5/5.31.2/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
X<PERL_INTERNAL_RAND_SEED>
If you configure perl with C<-Accflags=-DNO_PERL_INTERNAL_RAND_SEED>,
-perl will ignore the C<PERL_INTERNAL_RAND_SEED> enviroment variable.
+perl will ignore the C<PERL_INTERNAL_RAND_SEED> environment variable.
=head1 DOCUMENTATION
Read the manual entries before running perl. The main documentation
-is in the pod/ subdirectory and should have been installed during the
+is in the F<pod/> subdirectory and should have been installed during the
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.