Provided by: perl-doc_5.38.2-3.2build2_all bug

NAME

       Pod::Text - Convert POD data to formatted text

SYNOPSIS

           use Pod::Text;
           my $parser = Pod::Text->new (sentence => 1, width => 78);

           # Read POD from STDIN and write to STDOUT.
           $parser->parse_from_filehandle;

           # Read POD from file.pod and write to file.txt.
           $parser->parse_from_file ('file.pod', 'file.txt');

DESCRIPTION

       Pod::Text is a module that can convert documentation in the POD format (the preferred
       language for documenting Perl) into formatted text.  It uses no special formatting
       controls or codes, and its output is therefore suitable for nearly any device.

   Encoding
       Pod::Text uses the following logic to choose an output encoding, in order:

       1.  If a PerlIO encoding layer is set on the output file handle, do not do any output
           encoding and will instead rely on the PerlIO encoding layer.

       2.  If the "encoding" or "utf8" options are set, use the output encoding specified by
           those options.

       3.  If the input encoding of the POD source file was explicitly specified (using
           "=encoding") or automatically detected by Pod::Simple, use that as the output encoding
           as well.

       4.  Otherwise, if running on a non-EBCDIC system, use UTF-8 as the output encoding.  Since
           this is a superset of ASCII, this will result in ASCII output unless the POD input
           contains non-ASCII characters without declaring or autodetecting an encoding (usually
           via E<> escapes).

       5.  Otherwise, for EBCDIC systems, output without doing any encoding and hope this works.

       One caveat: Pod::Text has to commit to an output encoding the first time it outputs a non-
       ASCII character, and then has to stick with it for consistency.  However, "=encoding"
       commands don't have to be at the beginning of a POD document.  If someone uses a non-ASCII
       character early in a document with an escape, such as E<0xEF>, and then puts "=encoding
       iso-8859-1" later, ideally Pod::Text would follow rule 3 and output the entire document as
       ISO 8859-1.  Instead, it will commit to UTF-8 following rule 4 as soon as it sees that
       escape, and then stick with that encoding for the rest of the document.

       Unfortunately, there's no universally good choice for an output encoding.  Each choice
       will be incorrect in some circumstances.  This approach was chosen primarily for backwards
       compatibility.  Callers should consider forcing the output encoding via "encoding" if they
       have any knowledge about what encoding the user may expect.

       In particular, consider importing the Encode::Locale module, if available, and setting
       "encoding" to "locale" to use an output encoding appropriate to the user's locale.  But be
       aware that if the user is not using locales or is using a locale of "C", Encode::Locale
       will set the output encoding to US-ASCII.  This will cause all non-ASCII characters will
       be replaced with "?"  and produce a flurry of warnings about unsupported characters, which
       may or may not be what you want.

CLASS METHODS

       new(ARGS)
           Create a new Pod::Text object.  ARGS should be a list of key/value pairs, where the
           keys are chosen from the following.  Each option is annotated with the version of
           Pod::Text in which that option was added with its current meaning.

           alt [2.00] If set to a true value, selects an alternate output format that, among
               other things, uses a different heading style and marks "=item" entries with a
               colon in the left margin.  Defaults to false.

           code
               [2.13] If set to a true value, the non-POD parts of the input file will be
               included in the output.  Useful for viewing code documented with POD blocks with
               the POD rendered and the code left intact.

           encoding
               [5.00] Specifies the encoding of the output.  The value must be an encoding
               recognized by the Encode module (see Encode::Supported).  If the output contains
               characters that cannot be represented in this encoding, that is an error that will
               be reported as configured by the "errors" option.  If error handling is other than
               "die", the unrepresentable character will be replaced with the Encode substitution
               character (normally "?").

               If the output file handle has a PerlIO encoding layer set, this parameter will be
               ignored and no encoding will be done by Pod::Man.  It will instead rely on the
               encoding layer to make whatever output encoding transformations are desired.

               WARNING: The input encoding of the POD source is independent from the output
               encoding, and setting this option does not affect the interpretation of the POD
               input.  Unless your POD source is US-ASCII, its encoding should be declared with
               the "=encoding" command in the source, as near to the top of the file as possible.
               If this is not done, Pod::Simple will will attempt to guess the encoding and may
               be successful if it's Latin-1 or UTF-8, but it will produce warnings.  See
               perlpod(1) for more information.

           errors
               [3.17] How to report errors.  "die" says to throw an exception on any POD
               formatting error.  "stderr" says to report errors on standard error, but not to
               throw an exception.  "pod" says to include a POD ERRORS section in the resulting
               documentation summarizing the errors.  "none" ignores POD errors entirely, as much
               as possible.

               The default is "pod".

           guesswork
               [5.01] By default, Pod::Text applies some default formatting rules based on
               guesswork and regular expressions that are intended to make writing Perl
               documentation easier and require less explicit markup.  These rules may not always
               be appropriate, particularly for documentation that isn't about Perl.  This option
               allows turning all or some of it off.

               The special value "all" enables all guesswork.  This is also the default for
               backward compatibility reasons.  The special value "none" disables all guesswork.
               Otherwise, the value of this option should be a comma-separated list of one or
               more of the following keywords:

               quoting
                   If no guesswork is enabled, any text enclosed in C<> is surrounded by double
                   quotes in nroff (terminal) output unless the contents are already quoted.
                   When this guesswork is enabled, quote marks will also be suppressed for Perl
                   variables, function names, function calls, numbers, and hex constants.

               Any unknown guesswork name is silently ignored (for potential future
               compatibility), so be careful about spelling.

           indent
               [2.00] The number of spaces to indent regular text, and the default indentation
               for "=over" blocks.  Defaults to 4.

           loose
               [2.00] If set to a true value, a blank line is printed after a "=head1" heading.
               If set to false (the default), no blank line is printed after "=head1", although
               one is still printed after "=head2".  This is the default because it's the
               expected formatting for manual pages; if you're formatting arbitrary text
               documents, setting this to true may result in more pleasing output.

           margin
               [2.21] The width of the left margin in spaces.  Defaults to 0.  This is the margin
               for all text, including headings, not the amount by which regular text is
               indented; for the latter, see the indent option.  To set the right margin, see the
               width option.

           nourls
               [3.17] Normally, L<> formatting codes with a URL but anchor text are formatted to
               show both the anchor text and the URL.  In other words:

                   L<foo|http://example.com/>

               is formatted as:

                   foo <http://example.com/>

               This option, if set to a true value, suppresses the URL when anchor text is given,
               so this example would be formatted as just "foo".  This can produce less cluttered
               output in cases where the URLs are not particularly important.

           quotes
               [4.00] Sets the quote marks used to surround C<> text.  If the value is a single
               character, it is used as both the left and right quote.  Otherwise, it is split in
               half, and the first half of the string is used as the left quote and the second is
               used as the right quote.

               This may also be set to the special value "none", in which case no quote marks are
               added around C<> text.

           sentence
               [3.00] If set to a true value, Pod::Text will assume that each sentence ends in
               two spaces, and will try to preserve that spacing.  If set to false, all
               consecutive whitespace in non-verbatim paragraphs is compressed into a single
               space.  Defaults to false.

           stderr
               [3.10] Send error messages about invalid POD to standard error instead of
               appending a POD ERRORS section to the generated output.  This is equivalent to
               setting "errors" to "stderr" if "errors" is not already set.  It is supported for
               backward compatibility.

           utf8
               [3.12] If this option is set to a true value, the output encoding is set to UTF-8.
               This is equivalent to setting "encoding" to "UTF-8" if "encoding" is not already
               set.  It is supported for backward compatibility.

           width
               [2.00] The column at which to wrap text on the right-hand side.  Defaults to 76.

INSTANCE METHODS

       As a derived class from Pod::Simple, Pod::Text supports the same methods and interfaces.
       See Pod::Simple for all the details.  This section summarizes the most-frequently-used
       methods and the ones added by Pod::Text.

       output_fh(FH)
           Direct the output from parse_file(), parse_lines(), or parse_string_document() to the
           file handle FH instead of "STDOUT".

       output_string(REF)
           Direct the output from parse_file(), parse_lines(), or parse_string_document() to the
           scalar variable pointed to by REF, rather than "STDOUT".  For example:

               my $man = Pod::Man->new();
               my $output;
               $man->output_string(\$output);
               $man->parse_file('/some/input/file');

           Be aware that the output in that variable will already be encoded (see "Encoding").

       parse_file(PATH)
           Read the POD source from PATH and format it.  By default, the output is sent to
           "STDOUT", but this can be changed with the output_fh() or output_string() methods.

       parse_from_file(INPUT, OUTPUT)
       parse_from_filehandle(FH, OUTPUT)
           Read the POD source from INPUT, format it, and output the results to OUTPUT.

           parse_from_filehandle() is provided for backward compatibility with older versions of
           Pod::Man.  parse_from_file() should be used instead.

       parse_lines(LINES[, ...[, undef]])
           Parse the provided lines as POD source, writing the output to either "STDOUT" or the
           file handle set with the output_fh() or output_string() methods.  This method can be
           called repeatedly to provide more input lines.  An explicit "undef" should be passed
           to indicate the end of input.

           This method expects raw bytes, not decoded characters.

       parse_string_document(INPUT)
           Parse the provided scalar variable as POD source, writing the output to either
           "STDOUT" or the file handle set with the output_fh() or output_string() methods.

           This method expects raw bytes, not decoded characters.

FUNCTIONS

       Pod::Text exports one function for backward compatibility with older versions.  This
       function is deprecated; instead, use the object-oriented interface described above.

       pod2text([[-a,] [-NNN,]] INPUT[, OUTPUT])
           Convert the POD source from INPUT to text and write it to OUTPUT.  If OUTPUT is not
           given, defaults to "STDOUT".  INPUT can be any expression supported as the second
           argument to two-argument open().

           If "-a" is given as an initial argument, pass the "alt" option to the Pod::Text
           constructor.  This enables alternative formatting.

           If "-NNN" is given as an initial argument, pass the "width" option to the Pod::Text
           constructor with the number "NNN" as its argument.  This sets the wrap line width to
           NNN.

DIAGNOSTICS

       Bizarre space in item
       Item called without tag
           (W) Something has gone wrong in internal "=item" processing.  These messages indicate
           a bug in Pod::Text; you should never see them.

       Can't open %s for reading: %s
           (F) Pod::Text was invoked via the compatibility mode pod2text() interface and the
           input file it was given could not be opened.

       Invalid errors setting "%s"
           (F) The "errors" parameter to the constructor was set to an unknown value.

       Invalid quote specification "%s"
           (F) The quote specification given (the "quotes" option to the constructor) was
           invalid.  A quote specification must be either one character long or an even number
           (greater than one) characters long.

       POD document had syntax errors
           (F) The POD document being formatted had syntax errors and the "errors" option was set
           to "die".

COMPATIBILITY

       Pod::Text 2.03 (based on Pod::Parser) was the first version of this module included with
       Perl, in Perl 5.6.0.  Earlier versions of Perl had a different Pod::Text module, with a
       different API.

       The current API based on Pod::Simple was added in Pod::Text 3.00.  Pod::Text 3.01 was
       included in Perl 5.9.3, the first version of Perl to incorporate those changes.  This is
       the first version that correctly supports all modern POD syntax.  The
       parse_from_filehandle() method was re-added for backward compatibility in Pod::Text 3.07,
       included in Perl 5.9.4.

       Pod::Text 3.12, included in Perl 5.10.1, first implemented the current practice of
       attempting to match the default output encoding with the input encoding of the POD source,
       unless overridden by the "utf8" option or (added later) the "encoding" option.

       Support for anchor text in L<> links of type URL was added in Pod::Text 3.14, included in
       Perl 5.11.5.

       parse_lines(), parse_string_document(), and parse_file() set a default output file handle
       of "STDOUT" if one was not already set as of Pod::Text 3.18, included in Perl 5.19.5.

       Pod::Text 4.00, included in Perl 5.23.7, aligned the module version and the version of the
       podlators distribution.  All modules included in podlators, and the podlators distribution
       itself, share the same version number from this point forward.

       Pod::Text 4.09, included in Perl 5.25.7, fixed a serious bug on EBCDIC systems, present in
       all versions back to 3.00, that would cause opening brackets to disappear.

       Pod::Text 5.00 now defaults, on non-EBCDIC systems, to UTF-8 encoding if it sees a non-
       ASCII character in the input and the input encoding is not specified.  It also commits to
       an encoding with the first non-ASCII character and does not change the output encoding if
       the input encoding changes.  The Encode module is now used for all output encoding rather
       than PerlIO layers, which fixes earlier problems with output to scalars.

AUTHOR

       Russ Allbery <rra@cpan.org>, based very heavily on the original Pod::Text by Tom
       Christiansen <tchrist@mox.perl.com> and its conversion to Pod::Parser by Brad Appleton
       <bradapp@enteract.com>.  Sean Burke's initial conversion of Pod::Man to use Pod::Simple
       provided much-needed guidance on how to use Pod::Simple.

COPYRIGHT AND LICENSE

       Copyright 1999-2002, 2004, 2006, 2008-2009, 2012-2016, 2018-2019, 2022 Russ Allbery
       <rra@cpan.org>

       This program is free software; you may redistribute it and/or modify it under the same
       terms as Perl itself.

SEE ALSO

       Encode::Locale, Encode::Supproted, Pod::Simple, Pod::Text::Termcap, perlpod(1),
       pod2text(1)

       The current version of this module is always available from its web site at
       <https://www.eyrie.org/~eagle/software/podlators/>.  It is also part of the Perl core
       distribution as of 5.6.0.