podlators

We move from making unnecessary efforts, the exertions of force, to making necessary efforts: the direction of effortlessness. In this the prime maxim is: honor necessity, honor sufficiency.

— Robert Fripp, "The Road to Graceland"

Description

POD is the Plain Old Documentation format, the documentation language used for all of Perl's documentation. I learned it to document Perl modules, started using it for Perl scripts as well, and discovered it was the most convenient way I've found to write program documentation. It's extremely simple, well-designed for writing Unix manual pages (and I'm a traditionalist who thinks that any program should have a regular manual page), and easily readable in the raw format by humans.

The translators into text and nroff (for manual pages) included in the Perl distribution had various bugs, however, and used their own ad hoc parsers, so when I started running into those bugs and when a new generic parser (Pod::Parser) was written, I decided to rewrite the two translators that I use the most and fix the bugs that were bothering me. This package is the result.

podlators contains two main modules, Pod::Man and Pod::Text. The former converts POD into nroff/troff source and the latter into plain text (with various options controlling some of the formatting). There are also several subclasses of Pod::Text for generating slightly formatted text using color or other terminal control escapes, and a general utility module, Pod::ParseLink, for parsing the POD L<> formatting sequences. Also included in this package are the pod2text and pod2man driver scripts.

As of Perl 5.6.0, my implementation was included in Perl core, and each release of Perl will have the at-the-time most current version of podlators included. You therefore only need to install this package yourself if you have an old verison of Perl or need a newer version than came with Perl (to get some bug fixes, for example).

Requirements

Perl 5.005 or later is required for Pod::Man, since earlier verisons have various bugs in the handling of references. The other modules only require Perl 5.004. Pod::Simple 3.06 or later is required and 3.07 or later is recommended (included with Perl 5.10.0 or later), as is File::Spec 0.8 or later (included with Perl 5.005 or later). For Pod::Text::Color, Term::ANSIColor is also required (included with Perl 5.6.0 and later).

For the utf8 option to Pod::Man and Pod::Text, PerlIO support in the Perl interpreter is required. This option currently uses PerlIO encoding layers to handle the output encoding. PerlIO support is also required for Pod::Text to set the output encoding to match the input encoding; without this, the output will use Perl's internal encoding, which may be surprising and may produce Perl warnings.

The troff/nroff generated by Pod::Man should be compatible with any troff or nroff implementation with the -man macro set. It is primarily tested by me under GNU groff, but Perl users send bug reports for a wide variety of implementations and Pod::Man is used to generate all of Perl's own manual pages, so most of the bugs have been weeded out.

To run the test suite, Test::More (included with Perl 5.6.2 and later or available on CPAN) is required. Test::Pod, Pod::Spell, and either aspell or ispell are required to run the spelling tests. They can be found in CPAN (and are packaged for Debian). Spelling tests are disabled unless an environment variable is set since spelling dictionaries vary too much by system.

Download

The distribution:

podlators 2.5.3 2013-10-06 Download PGP signature

An archive of older releases is also available.

podlators is maintained using the Git version control system. To check out the current development tree, clone:

    git://git.eyrie.org/perl/podlators.git

You can also browse the current development source.

Documentation

User documentation:

Developer documentation:

License

Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012, 2013 Russ Allbery <rra@stanford.edu>

This program is free software; you may redistribute it and/or modify it under the same terms as Perl itself. This means that you may choose between the two licenses that Perl is released under: the GNU GPL and the Artistic License. Please see your Perl distribution for the details and copies of the licenses.

Last spun 2014-01-03 from thread modified 2013-09-22