summaryrefslogtreecommitdiffstats
path: root/upstream/mageia-cauldron/man1/perlsource.1
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 19:43:11 +0000
commitfc22b3d6507c6745911b9dfcc68f1e665ae13dbc (patch)
treece1e3bce06471410239a6f41282e328770aa404a /upstream/mageia-cauldron/man1/perlsource.1
parentInitial commit. (diff)
downloadmanpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.tar.xz
manpages-l10n-fc22b3d6507c6745911b9dfcc68f1e665ae13dbc.zip
Adding upstream version 4.22.0.upstream/4.22.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'upstream/mageia-cauldron/man1/perlsource.1')
-rw-r--r--upstream/mageia-cauldron/man1/perlsource.1270
1 files changed, 270 insertions, 0 deletions
diff --git a/upstream/mageia-cauldron/man1/perlsource.1 b/upstream/mageia-cauldron/man1/perlsource.1
new file mode 100644
index 00000000..53509dcf
--- /dev/null
+++ b/upstream/mageia-cauldron/man1/perlsource.1
@@ -0,0 +1,270 @@
+.\" -*- mode: troff; coding: utf-8 -*-
+.\" Automatically generated by Pod::Man 5.01 (Pod::Simple 3.43)
+.\"
+.\" Standard preamble:
+.\" ========================================================================
+.de Sp \" Vertical space (when we can't use .PP)
+.if t .sp .5v
+.if n .sp
+..
+.de Vb \" Begin verbatim text
+.ft CW
+.nf
+.ne \\$1
+..
+.de Ve \" End verbatim text
+.ft R
+.fi
+..
+.\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>.
+.ie n \{\
+. ds C` ""
+. ds C' ""
+'br\}
+.el\{\
+. ds C`
+. ds C'
+'br\}
+.\"
+.\" Escape single quotes in literal strings from groff's Unicode transform.
+.ie \n(.g .ds Aq \(aq
+.el .ds Aq '
+.\"
+.\" If the F register is >0, we'll generate index entries on stderr for
+.\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index
+.\" entries marked with X<> in POD. Of course, you'll have to process the
+.\" output yourself in some meaningful fashion.
+.\"
+.\" Avoid warning from groff about undefined register 'F'.
+.de IX
+..
+.nr rF 0
+.if \n(.g .if rF .nr rF 1
+.if (\n(rF:(\n(.g==0)) \{\
+. if \nF \{\
+. de IX
+. tm Index:\\$1\t\\n%\t"\\$2"
+..
+. if !\nF==2 \{\
+. nr % 0
+. nr F 2
+. \}
+. \}
+.\}
+.rr rF
+.\" ========================================================================
+.\"
+.IX Title "PERLSOURCE 1"
+.TH PERLSOURCE 1 2023-11-28 "perl v5.38.2" "Perl Programmers Reference Guide"
+.\" For nroff, turn off justification. Always turn off hyphenation; it makes
+.\" way too many mistakes in technical documents.
+.if n .ad l
+.nh
+.SH NAME
+perlsource \- A guide to the Perl source tree
+.SH DESCRIPTION
+.IX Header "DESCRIPTION"
+This document describes the layout of the Perl source tree. If you're
+hacking on the Perl core, this will help you find what you're looking
+for.
+.SH "FINDING YOUR WAY AROUND"
+.IX Header "FINDING YOUR WAY AROUND"
+The Perl source tree is big. Here's some of the thing you'll find in
+it:
+.SS "C code"
+.IX Subsection "C code"
+The C source code and header files mostly live in the root of the
+source tree. There are a few platform-specific directories which
+contain C code. In addition, some of the modules shipped with Perl
+include C or XS code.
+.PP
+See perlinterp for more details on the files that make up the Perl
+interpreter, as well as details on how it works.
+.SS "Core modules"
+.IX Subsection "Core modules"
+Modules shipped as part of the Perl core live in four subdirectories.
+Two of these directories contain modules that live in the core, and two
+contain modules that can also be released separately on CPAN. Modules
+which can be released on cpan are known as "dual-life" modules.
+.IP \(bu 4
+\&\fIlib/\fR
+.Sp
+This directory contains pure-Perl modules which are only released as
+part of the core. This directory contains \fIall\fR of the modules and
+their tests, unlike other core modules.
+.IP \(bu 4
+\&\fIext/\fR
+.Sp
+Like \fIlib/\fR, this directory contains modules which are only released
+as part of the core. Unlike \fIlib/\fR, however, a module under \fIext/\fR
+generally has a CPAN-style directory\- and file-layout and its own
+\&\fIMakefile.PL\fR. There is no expectation that a module under \fIext/\fR
+will work with earlier versions of Perl 5. Hence, such a module may
+take full advantage of syntactical and other improvements in Perl 5
+blead.
+.IP \(bu 4
+\&\fIdist/\fR
+.Sp
+This directory is for dual-life modules where the blead source is
+canonical. Note that some modules in this directory may not yet have
+been released separately on CPAN. Modules under \fIdist/\fR should make
+an effort to work with earlier versions of Perl 5.
+.IP \(bu 4
+\&\fIcpan/\fR
+.Sp
+This directory contains dual-life modules where the CPAN module is
+canonical. Do not patch these modules directly! Changes to these
+modules should be submitted to the maintainer of the CPAN module. Once
+those changes are applied and released, the new version of the module
+will be incorporated into the core.
+.PP
+For some dual-life modules, it has not yet been determined if the CPAN
+version or the blead source is canonical. Until that is done, those
+modules should be in \fIcpan/\fR.
+.SS Tests
+.IX Subsection "Tests"
+The Perl core has an extensive test suite. If you add new tests (or new
+modules with tests), you may need to update the \fIt/TEST\fR file so that
+the tests are run.
+.IP \(bu 4
+Module tests
+.Sp
+Tests for core modules in the \fIlib/\fR directory are right next to the
+module itself. For example, we have \fIlib/strict.pm\fR and
+\&\fIlib/strict.t\fR.
+.Sp
+Tests for modules in \fIext/\fR and the dual-life modules are in \fIt/\fR
+subdirectories for each module, like a standard CPAN distribution.
+.IP \(bu 4
+\&\fIt/base/\fR
+.Sp
+Tests for the absolute basic functionality of Perl. This includes
+\&\f(CW\*(C`if\*(C'\fR, basic file reads and writes, simple regexes, etc. These are run
+first in the test suite and if any of them fail, something is \fIreally\fR
+broken.
+.IP \(bu 4
+\&\fIt/cmd/\fR
+.Sp
+Tests for basic control structures, \f(CW\*(C`if\*(C'\fR/\f(CW\*(C`else\*(C'\fR, \f(CW\*(C`while\*(C'\fR, subroutines,
+etc.
+.IP \(bu 4
+\&\fIt/comp/\fR
+.Sp
+Tests for basic issues of how Perl parses and compiles itself.
+.IP \(bu 4
+\&\fIt/io/\fR
+.Sp
+Tests for built-in IO functions, including command line arguments.
+.IP \(bu 4
+\&\fIt/mro/\fR
+.Sp
+Tests for perl's method resolution order implementations (see mro).
+.IP \(bu 4
+\&\fIt/op/\fR
+.Sp
+Tests for perl's built in functions that don't fit into any of the
+other directories.
+.IP \(bu 4
+\&\fIt/opbasic/\fR
+.Sp
+Tests for perl's built in functions which, like those in \fIt/op/\fR, do
+not fit into any of the other directories, but which, in addition,
+cannot use \fIt/test.pl\fR,as that program depends on functionality which
+the test file itself is testing.
+.IP \(bu 4
+\&\fIt/re/\fR
+.Sp
+Tests for regex related functions or behaviour. (These used to live in
+t/op).
+.IP \(bu 4
+\&\fIt/run/\fR
+.Sp
+Tests for features of how perl actually runs, including exit codes and
+handling of PERL* environment variables.
+.IP \(bu 4
+\&\fIt/uni/\fR
+.Sp
+Tests for the core support of Unicode.
+.IP \(bu 4
+\&\fIt/win32/\fR
+.Sp
+Windows-specific tests.
+.IP \(bu 4
+\&\fIt/porting/\fR
+.Sp
+Tests the state of the source tree for various common errors. For
+example, it tests that everyone who is listed in the git log has a
+corresponding entry in the \fIAUTHORS\fR file.
+.IP \(bu 4
+\&\fIt/lib/\fR
+.Sp
+The old home for the module tests, you shouldn't put anything new in
+here. There are still some bits and pieces hanging around in here that
+need to be moved. Perhaps you could move them? Thanks!
+.SS Documentation
+.IX Subsection "Documentation"
+All of the core documentation intended for end users lives in \fIpod/\fR.
+Individual modules in \fIlib/\fR, \fIext/\fR, \fIdist/\fR, and \fIcpan/\fR usually
+have their own documentation, either in the \fIModule.pm\fR file or an
+accompanying \fIModule.pod\fR file.
+.PP
+Finally, documentation intended for core Perl developers lives in the
+\&\fIPorting/\fR directory.
+.SS "Hacking tools and documentation"
+.IX Subsection "Hacking tools and documentation"
+The \fIPorting\fR directory contains a grab bag of code and documentation
+intended to help porters work on Perl. Some of the highlights include:
+.IP \(bu 4
+\&\fIcheck*\fR
+.Sp
+These are scripts which will check the source things like ANSI C
+violations, POD encoding issues, etc.
+.IP \(bu 4
+\&\fIMaintainers\fR, \fIMaintainers.pl\fR, and \fIMaintainers.pm\fR
+.Sp
+These files contain information on who maintains which modules. Run
+\&\f(CW\*(C`perl Porting/Maintainers \-M Module::Name\*(C'\fR to find out more
+information about a dual-life module.
+.IP \(bu 4
+\&\fIpodtidy\fR
+.Sp
+Tidies a pod file. It's a good idea to run this on a pod file you've
+patched.
+.SS "Build system"
+.IX Subsection "Build system"
+The Perl build system on *nix\-like systems starts with the \fIConfigure\fR
+script in the root directory.
+.PP
+Platform-specific pieces of the build system also live in
+platform-specific directories like \fIwin32/\fR, \fIvms/\fR, etc.
+Windows and VMS have their own Configure-like scripts, in their
+respective directories.
+.PP
+The \fIConfigure\fR script (or a platform-specific similar script) is
+ultimately responsible for generating a \fIMakefile\fR from \fIMakefile.SH\fR.
+.PP
+The build system that Perl uses is called metaconfig. This system is
+maintained separately from the Perl core, and knows about the
+platform-specific Configure-like scripts, as well as \fIConfigure\fR
+itself.
+.PP
+The metaconfig system has its own git repository. Please see its README
+file in <https://github.com/Perl/metaconfig> for more details.
+.PP
+The \fICross\fR directory contains various files related to
+cross-compiling Perl. See \fICross/README\fR for more details.
+.SS \fIAUTHORS\fP
+.IX Subsection "AUTHORS"
+This file lists everyone who's contributed to Perl. If you submit a
+patch, you should add your name to this file as part of the patch.
+.SS \fIMANIFEST\fP
+.IX Subsection "MANIFEST"
+The \fIMANIFEST\fR file in the root of the source tree contains a list of
+every file in the Perl core, as well as a brief description of each
+file.
+.PP
+You can get an overview of all the files with this command:
+.PP
+.Vb 1
+\& % perl \-lne \*(Aqprint if /^[^\e/]+\e.[ch]\es+/\*(Aq MANIFEST
+.Ve