1 2=for comment 3This document is in Pod format. To read this, use a Pod formatter, 4like "perldoc perlpod". 5 6=head1 NAME 7X<POD> X<plain old documentation> 8 9perlpod - the Plain Old Documentation format 10 11=head1 DESCRIPTION 12 13Pod is a simple-to-use markup language used for writing documentation 14for Perl, Perl programs, and Perl modules. 15 16Translators are available for converting Pod to various formats 17like plain text, HTML, man pages, and more. 18 19Pod markup consists of three basic kinds of paragraphs: 20L<ordinary|/"Ordinary Paragraph">, 21L<verbatim|/"Verbatim Paragraph">, and 22L<command|/"Command Paragraph">. 23 24 25=head2 Ordinary Paragraph 26X<POD, ordinary paragraph> 27 28Most paragraphs in your documentation will be ordinary blocks 29of text, like this one. You can simply type in your text without 30any markup whatsoever, and with just a blank line before and 31after. When it gets formatted, it will undergo minimal formatting, 32like being rewrapped, probably put into a proportionally spaced 33font, and maybe even justified. 34 35You can use formatting codes in ordinary paragraphs, for B<bold>, 36I<italic>, C<code-style>, L<hyperlinks|perlfaq>, and more. Such 37codes are explained in the "L<Formatting Codes|/"Formatting Codes">" 38section, below. 39 40 41=head2 Verbatim Paragraph 42X<POD, verbatim paragraph> X<verbatim> 43 44Verbatim paragraphs are usually used for presenting a codeblock or 45other text which does not require any special parsing or formatting, 46and which shouldn't be wrapped. 47 48A verbatim paragraph is distinguished by having its first character 49be a space or a tab. (And commonly, all its lines begin with spaces 50and/or tabs.) It should be reproduced exactly, with tabs assumed to 51be on 8-column boundaries. There are no special formatting codes, 52so you can't italicize or anything like that. A \ means \, and 53nothing else. 54 55 56=head2 Command Paragraph 57X<POD, command> 58 59A command paragraph is used for special treatment of whole chunks 60of text, usually as headings or parts of lists. 61 62All command paragraphs (which are typically only one line long) start 63with "=", followed by an identifier, followed by arbitrary text that 64the command can use however it pleases. Currently recognized commands 65are 66 67 =pod 68 =head1 Heading Text 69 =head2 Heading Text 70 =head3 Heading Text 71 =head4 Heading Text 72 =over indentlevel 73 =item stuff 74 =back 75 =begin format 76 =end format 77 =for format text... 78 =encoding type 79 =cut 80 81To explain them each in detail: 82 83=over 84 85=item C<=head1 I<Heading Text>> 86X<=head1> X<=head2> X<=head3> X<=head4> 87X<head1> X<head2> X<head3> X<head4> 88 89=item C<=head2 I<Heading Text>> 90 91=item C<=head3 I<Heading Text>> 92 93=item C<=head4 I<Heading Text>> 94 95Head1 through head4 produce headings, head1 being the highest 96level. The text in the rest of this paragraph is the content of the 97heading. For example: 98 99 =head2 Object Attributes 100 101The text "Object Attributes" comprises the heading there. (Note that 102head3 and head4 are recent additions, not supported in older Pod 103translators.) The text in these heading commands can use 104formatting codes, as seen here: 105 106 =head2 Possible Values for C<$/> 107 108Such commands are explained in the 109"L<Formatting Codes|/"Formatting Codes">" section, below. 110 111=item C<=over I<indentlevel>> 112X<=over> X<=item> X<=back> X<over> X<item> X<back> 113 114=item C<=item I<stuff...>> 115 116=item C<=back> 117 118Item, over, and back require a little more explanation: "=over" starts 119a region specifically for the generation of a list using "=item" 120commands, or for indenting (groups of) normal paragraphs. At the end 121of your list, use "=back" to end it. The I<indentlevel> option to 122"=over" indicates how far over to indent, generally in ems (where 123one em is the width of an "M" in the document's base font) or roughly 124comparable units; if there is no I<indentlevel> option, it defaults 125to four. (And some formatters may just ignore whatever I<indentlevel> 126you provide.) In the I<stuff> in C<=item I<stuff...>>, you may 127use formatting codes, as seen here: 128 129 =item Using C<$|> to Control Buffering 130 131Such commands are explained in the 132"L<Formatting Codes|/"Formatting Codes">" section, below. 133 134Note also that there are some basic rules to using "=over" ... 135"=back" regions: 136 137=over 138 139=item * 140 141Don't use "=item"s outside of an "=over" ... "=back" region. 142 143=item * 144 145The first thing after the "=over" command should be an "=item", unless 146there aren't going to be any items at all in this "=over" ... "=back" 147region. 148 149=item * 150 151Don't put "=headI<n>" commands inside an "=over" ... "=back" region. 152 153=item * 154 155And perhaps most importantly, keep the items consistent: either use 156"=item *" for all of them, to produce bullets; or use "=item 1.", 157"=item 2.", etc., to produce numbered lists; or use "=item foo", 158"=item bar", etc.--namely, things that look nothing like bullets or 159numbers. 160 161If you start with bullets or numbers, stick with them, as 162formatters use the first "=item" type to decide how to format the 163list. 164 165=back 166 167=item C<=cut> 168X<=cut> X<cut> 169 170To end a Pod block, use a blank line, 171then a line beginning with "=cut", and a blank 172line after it. This lets Perl (and the Pod formatter) know that 173this is where Perl code is resuming. (The blank line before the "=cut" 174is not technically necessary, but many older Pod processors require it.) 175 176=item C<=pod> 177X<=pod> X<pod> 178 179The "=pod" command by itself doesn't do much of anything, but it 180signals to Perl (and Pod formatters) that a Pod block starts here. A 181Pod block starts with I<any> command paragraph, so a "=pod" command is 182usually used just when you want to start a Pod block with an ordinary 183paragraph or a verbatim paragraph. For example: 184 185 =item stuff() 186 187 This function does stuff. 188 189 =cut 190 191 sub stuff { 192 ... 193 } 194 195 =pod 196 197 Remember to check its return value, as in: 198 199 stuff() || die "Couldn't do stuff!"; 200 201 =cut 202 203=item C<=begin I<formatname>> 204X<=begin> X<=end> X<=for> X<begin> X<end> X<for> 205 206=item C<=end I<formatname>> 207 208=item C<=for I<formatname> I<text...>> 209 210For, begin, and end will let you have regions of text/code/data that 211are not generally interpreted as normal Pod text, but are passed 212directly to particular formatters, or are otherwise special. A 213formatter that can use that format will use the region, otherwise it 214will be completely ignored. 215 216A command "=begin I<formatname>", some paragraphs, and a 217command "=end I<formatname>", mean that the text/data in between 218is meant for formatters that understand the special format 219called I<formatname>. For example, 220 221 =begin html 222 223 <hr> <img src="thang.png"> 224 <p> This is a raw HTML paragraph </p> 225 226 =end html 227 228The command "=for I<formatname> I<text...>" 229specifies that the remainder of just this paragraph (starting 230right after I<formatname>) is in that special format. 231 232 =for html <hr> <img src="thang.png"> 233 <p> This is a raw HTML paragraph </p> 234 235This means the same thing as the above "=begin html" ... "=end html" 236region. 237 238That is, with "=for", you can have only one paragraph's worth 239of text (i.e., the text in "=foo targetname text..."), but with 240"=begin targetname" ... "=end targetname", you can have any amount 241of stuff inbetween. (Note that there still must be a blank line 242after the "=begin" command and a blank line before the "=end" 243command. 244 245Here are some examples of how to use these: 246 247 =begin html 248 249 <br>Figure 1.<br><IMG SRC="figure1.png"><br> 250 251 =end html 252 253 =begin text 254 255 --------------- 256 | foo | 257 | bar | 258 --------------- 259 260 ^^^^ Figure 1. ^^^^ 261 262 =end text 263 264Some format names that formatters currently are known to accept 265include "roff", "man", "latex", "tex", "text", and "html". (Some 266formatters will treat some of these as synonyms.) 267 268A format name of "comment" is common for just making notes (presumably 269to yourself) that won't appear in any formatted version of the Pod 270document: 271 272 =for comment 273 Make sure that all the available options are documented! 274 275Some I<formatnames> will require a leading colon (as in 276C<"=for :formatname">, or 277C<"=begin :formatname" ... "=end :formatname">), 278to signal that the text is not raw data, but instead I<is> Pod text 279(i.e., possibly containing formatting codes) that's just not for 280normal formatting (e.g., may not be a normal-use paragraph, but might 281be for formatting as a footnote). 282 283=item C<=encoding I<encodingname>> 284X<=encoding> X<encoding> 285 286This command is used for declaring the encoding of a document. Most 287users won't need this; but if your encoding isn't US-ASCII or Latin-1, 288then put a C<=encoding I<encodingname>> command early in the document so 289that pod formatters will know how to decode the document. For 290I<encodingname>, use a name recognized by the L<Encode::Supported> 291module. Examples: 292 293 =encoding utf8 294 295 =encoding koi8-r 296 297 =encoding ShiftJIS 298 299 =encoding big5 300 301=back 302 303C<=encoding> affects the whole document, and must occur only once. 304 305And don't forget, when using any other command, that the command lasts up 306until the end of its I<paragraph>, not its line. So in the 307examples below, you can see that every command needs the blank 308line after it, to end its paragraph. 309 310Some examples of lists include: 311 312 =over 313 314 =item * 315 316 First item 317 318 =item * 319 320 Second item 321 322 =back 323 324 =over 325 326 =item Foo() 327 328 Description of Foo function 329 330 =item Bar() 331 332 Description of Bar function 333 334 =back 335 336 337=head2 Formatting Codes 338X<POD, formatting code> X<formatting code> 339X<POD, interior sequence> X<interior sequence> 340 341In ordinary paragraphs and in some command paragraphs, various 342formatting codes (a.k.a. "interior sequences") can be used: 343 344=for comment 345 "interior sequences" is such an opaque term. 346 Prefer "formatting codes" instead. 347 348=over 349 350=item C<IE<lt>textE<gt>> -- italic text 351X<I> X<< IZ<><> >> X<POD, formatting code, italic> X<italic> 352 353Used for emphasis ("C<be IE<lt>careful!E<gt>>") and parameters 354("C<redo IE<lt>LABELE<gt>>") 355 356=item C<BE<lt>textE<gt>> -- bold text 357X<B> X<< BZ<><> >> X<POD, formatting code, bold> X<bold> 358 359Used for switches ("C<perl's BE<lt>-nE<gt> switch>"), programs 360("C<some systems provide a BE<lt>chfnE<gt> for that>"), 361emphasis ("C<be BE<lt>careful!E<gt>>"), and so on 362("C<and that feature is known as BE<lt>autovivificationE<gt>>"). 363 364=item C<CE<lt>codeE<gt>> -- code text 365X<C> X<< CZ<><> >> X<POD, formatting code, code> X<code> 366 367Renders code in a typewriter font, or gives some other indication that 368this represents program text ("C<CE<lt>gmtime($^T)E<gt>>") or some other 369form of computerese ("C<CE<lt>drwxr-xr-xE<gt>>"). 370 371=item C<LE<lt>nameE<gt>> -- a hyperlink 372X<L> X<< LZ<><> >> X<POD, formatting code, hyperlink> X<hyperlink> 373 374There are various syntaxes, listed below. In the syntaxes given, 375C<text>, C<name>, and C<section> cannot contain the characters 376'/' and '|'; and any '<' or '>' should be matched. 377 378=over 379 380=item * 381 382C<LE<lt>nameE<gt>> 383 384Link to a Perl manual page (e.g., C<LE<lt>Net::PingE<gt>>). Note 385that C<name> should not contain spaces. This syntax 386is also occasionally used for references to Unix man pages, as in 387C<LE<lt>crontab(5)E<gt>>. 388 389=item * 390 391C<LE<lt>name/"sec"E<gt>> or C<LE<lt>name/secE<gt>> 392 393Link to a section in other manual page. E.g., 394C<LE<lt>perlsyn/"For Loops"E<gt>> 395 396=item * 397 398C<LE<lt>/"sec"E<gt>> or C<LE<lt>/secE<gt>> 399 400Link to a section in this manual page. E.g., 401C<LE<lt>/"Object Methods"E<gt>> 402 403=back 404 405A section is started by the named heading or item. For 406example, C<LE<lt>perlvar/$.E<gt>> or C<LE<lt>perlvar/"$."E<gt>> both 407link to the section started by "C<=item $.>" in perlvar. And 408C<LE<lt>perlsyn/For LoopsE<gt>> or C<LE<lt>perlsyn/"For Loops"E<gt>> 409both link to the section started by "C<=head2 For Loops>" 410in perlsyn. 411 412To control what text is used for display, you 413use "C<LE<lt>text|...E<gt>>", as in: 414 415=over 416 417=item * 418 419C<LE<lt>text|nameE<gt>> 420 421Link this text to that manual page. E.g., 422C<LE<lt>Perl Error Messages|perldiagE<gt>> 423 424=item * 425 426C<LE<lt>text|name/"sec"E<gt>> or C<LE<lt>text|name/secE<gt>> 427 428Link this text to that section in that manual page. E.g., 429C<LE<lt>postfix "if"|perlsyn/"Statement Modifiers"E<gt>> 430 431=item * 432 433C<LE<lt>text|/"sec"E<gt>> or C<LE<lt>text|/secE<gt>> 434or C<LE<lt>text|"sec"E<gt>> 435 436Link this text to that section in this manual page. E.g., 437C<LE<lt>the various attributes|/"Member Data"E<gt>> 438 439=back 440 441Or you can link to a web page: 442 443=over 444 445=item * 446 447C<LE<lt>scheme:...E<gt>> 448 449C<LE<lt>text|scheme:...E<gt>> 450 451Links to an absolute URL. For example, C<LE<lt>http://www.perl.org/E<gt>> or 452C<LE<lt>The Perl Home Page|http://www.perl.org/E<gt>>. 453 454=back 455 456=item C<EE<lt>escapeE<gt>> -- a character escape 457X<E> X<< EZ<><> >> X<POD, formatting code, escape> X<escape> 458 459Very similar to HTML/XML C<&I<foo>;> "entity references": 460 461=over 462 463=item * 464 465C<EE<lt>ltE<gt>> -- a literal E<lt> (less than) 466 467=item * 468 469C<EE<lt>gtE<gt>> -- a literal E<gt> (greater than) 470 471=item * 472 473C<EE<lt>verbarE<gt>> -- a literal | (I<ver>tical I<bar>) 474 475=item * 476 477C<EE<lt>solE<gt>> = a literal / (I<sol>idus) 478 479The above four are optional except in other formatting codes, 480notably C<LE<lt>...E<gt>>, and when preceded by a 481capital letter. 482 483=item * 484 485C<EE<lt>htmlnameE<gt>> 486 487Some non-numeric HTML entity name, such as C<EE<lt>eacuteE<gt>>, 488meaning the same thing as C<é> in HTML -- i.e., a lowercase 489e with an acute (/-shaped) accent. 490 491=item * 492 493C<EE<lt>numberE<gt>> 494 495The ASCII/Latin-1/Unicode character with that number. A 496leading "0x" means that I<number> is hex, as in 497C<EE<lt>0x201EE<gt>>. A leading "0" means that I<number> is octal, 498as in C<EE<lt>075E<gt>>. Otherwise I<number> is interpreted as being 499in decimal, as in C<EE<lt>181E<gt>>. 500 501Note that older Pod formatters might not recognize octal or 502hex numeric escapes, and that many formatters cannot reliably 503render characters above 255. (Some formatters may even have 504to use compromised renderings of Latin-1 characters, like 505rendering C<EE<lt>eacuteE<gt>> as just a plain "e".) 506 507=back 508 509=item C<FE<lt>filenameE<gt>> -- used for filenames 510X<F> X<< FZ<><> >> X<POD, formatting code, filename> X<filename> 511 512Typically displayed in italics. Example: "C<FE<lt>.cshrcE<gt>>" 513 514=item C<SE<lt>textE<gt>> -- text contains non-breaking spaces 515X<S> X<< SZ<><> >> X<POD, formatting code, non-breaking space> 516X<non-breaking space> 517 518This means that the words in I<text> should not be broken 519across lines. Example: S<C<SE<lt>$x ? $y : $zE<gt>>>. 520 521=item C<XE<lt>topic nameE<gt>> -- an index entry 522X<X> X<< XZ<><> >> X<POD, formatting code, index entry> X<index entry> 523 524This is ignored by most formatters, but some may use it for building 525indexes. It always renders as empty-string. 526Example: C<XE<lt>absolutizing relative URLsE<gt>> 527 528=item C<ZE<lt>E<gt>> -- a null (zero-effect) formatting code 529X<Z> X<< ZZ<><> >> X<POD, formatting code, null> X<null> 530 531This is rarely used. It's one way to get around using an 532EE<lt>...E<gt> code sometimes. For example, instead of 533"C<NEE<lt>ltE<gt>3>" (for "NE<lt>3") you could write 534"C<NZE<lt>E<gt>E<lt>3>" (the "ZE<lt>E<gt>" breaks up the "N" and 535the "E<lt>" so they can't be considered 536the part of a (fictitious) "NE<lt>...E<gt>" code. 537 538=for comment 539 This was formerly explained as a "zero-width character". But it in 540 most parser models, it parses to nothing at all, as opposed to parsing 541 as if it were a E<zwnj> or E<zwj>, which are REAL zero-width characters. 542 So "width" and "character" are exactly the wrong words. 543 544=back 545 546Most of the time, you will need only a single set of angle brackets to 547delimit the beginning and end of formatting codes. However, 548sometimes you will want to put a real right angle bracket (a 549greater-than sign, '>') inside of a formatting code. This is particularly 550common when using a formatting code to provide a different font-type for a 551snippet of code. As with all things in Perl, there is more than 552one way to do it. One way is to simply escape the closing bracket 553using an C<E> code: 554 555 C<$a E<lt>=E<gt> $b> 556 557This will produce: "C<$a E<lt>=E<gt> $b>" 558 559A more readable, and perhaps more "plain" way is to use an alternate 560set of delimiters that doesn't require a single ">" to be escaped. 561Doubled angle brackets ("<<" and ">>") may be used I<if and only if there is 562whitespace right after the opening delimiter and whitespace right 563before the closing delimiter!> For example, the following will 564do the trick: 565X<POD, formatting code, escaping with multiple brackets> 566 567 C<< $a <=> $b >> 568 569In fact, you can use as many repeated angle-brackets as you like so 570long as you have the same number of them in the opening and closing 571delimiters, and make sure that whitespace immediately follows the last 572'<' of the opening delimiter, and immediately precedes the first '>' 573of the closing delimiter. (The whitespace is ignored.) So the 574following will also work: 575X<POD, formatting code, escaping with multiple brackets> 576 577 C<<< $a <=> $b >>> 578 C<<<< $a <=> $b >>>> 579 580And they all mean exactly the same as this: 581 582 C<$a E<lt>=E<gt> $b> 583 584The multiple-bracket form does not affect the interpretation of the contents of 585the formatting code, only how it must end. That means that the examples above 586are also exactly the same as this: 587 588 C<< $a E<lt>=E<gt> $b >> 589 590As a further example, this means that if you wanted to put these bits of 591code in C<C> (code) style: 592 593 open(X, ">>thing.dat") || die $! 594 $foo->bar(); 595 596you could do it like so: 597 598 C<<< open(X, ">>thing.dat") || die $! >>> 599 C<< $foo->bar(); >> 600 601which is presumably easier to read than the old way: 602 603 C<open(X, "E<gt>E<gt>thing.dat") || die $!> 604 C<$foo-E<gt>bar();> 605 606This is currently supported by pod2text (Pod::Text), pod2man (Pod::Man), 607and any other pod2xxx or Pod::Xxxx translators that use 608Pod::Parser 1.093 or later, or Pod::Tree 1.02 or later. 609 610=head2 The Intent 611X<POD, intent of> 612 613The intent is simplicity of use, not power of expression. Paragraphs 614look like paragraphs (block format), so that they stand out 615visually, and so that I could run them through C<fmt> easily to reformat 616them (that's F7 in my version of B<vi>, or Esc Q in my version of 617B<emacs>). I wanted the translator to always leave the C<'> and C<`> and 618C<"> quotes alone, in verbatim mode, so I could slurp in a 619working program, shift it over four spaces, and have it print out, er, 620verbatim. And presumably in a monospace font. 621 622The Pod format is not necessarily sufficient for writing a book. Pod 623is just meant to be an idiot-proof common source for nroff, HTML, 624TeX, and other markup languages, as used for online 625documentation. Translators exist for B<pod2text>, B<pod2html>, 626B<pod2man> (that's for nroff(1) and troff(1)), B<pod2latex>, and 627B<pod2fm>. Various others are available in CPAN. 628 629 630=head2 Embedding Pods in Perl Modules 631X<POD, embedding> 632 633You can embed Pod documentation in your Perl modules and scripts. 634Start your documentation with an empty line, a "=head1" command at the 635beginning, and end it with a "=cut" command and an empty line. Perl 636will ignore the Pod text. See any of the supplied library modules for 637examples. If you're going to put your Pod at the end of the file, and 638you're using an __END__ or __DATA__ cut mark, make sure to put an 639empty line there before the first Pod command. 640 641 __END__ 642 643 =head1 NAME 644 645 Time::Local - efficiently compute time from local and GMT time 646 647Without that empty line before the "=head1", many translators wouldn't 648have recognized the "=head1" as starting a Pod block. 649 650=head2 Hints for Writing Pod 651 652=over 653 654=item * 655X<podchecker> X<POD, validating> 656 657The B<podchecker> command is provided for checking Pod syntax for errors 658and warnings. For example, it checks for completely blank lines in 659Pod blocks and for unknown commands and formatting codes. You should 660still also pass your document through one or more translators and proofread 661the result, or print out the result and proofread that. Some of the 662problems found may be bugs in the translators, which you may or may not 663wish to work around. 664 665=item * 666 667If you're more familiar with writing in HTML than with writing in Pod, you 668can try your hand at writing documentation in simple HTML, and converting 669it to Pod with the experimental L<Pod::HTML2Pod|Pod::HTML2Pod> module, 670(available in CPAN), and looking at the resulting code. The experimental 671L<Pod::PXML|Pod::PXML> module in CPAN might also be useful. 672 673=item * 674 675Many older Pod translators require the lines before every Pod 676command and after every Pod command (including "=cut"!) to be a blank 677line. Having something like this: 678 679 # - - - - - - - - - - - - 680 =item $firecracker->boom() 681 682 This noisily detonates the firecracker object. 683 =cut 684 sub boom { 685 ... 686 687...will make such Pod translators completely fail to see the Pod block 688at all. 689 690Instead, have it like this: 691 692 # - - - - - - - - - - - - 693 694 =item $firecracker->boom() 695 696 This noisily detonates the firecracker object. 697 698 =cut 699 700 sub boom { 701 ... 702 703=item * 704 705Some older Pod translators require paragraphs (including command 706paragraphs like "=head2 Functions") to be separated by I<completely> 707empty lines. If you have an apparently empty line with some spaces 708on it, this might not count as a separator for those translators, and 709that could cause odd formatting. 710 711=item * 712 713Older translators might add wording around an LE<lt>E<gt> link, so that 714C<LE<lt>Foo::BarE<gt>> may become "the Foo::Bar manpage", for example. 715So you shouldn't write things like C<the LE<lt>fooE<gt> 716documentation>, if you want the translated document to read sensibly. 717Instead, write C<the LE<lt>Foo::Bar|Foo::BarE<gt> documentation> or 718C<LE<lt>the Foo::Bar documentation|Foo::BarE<gt>>, to control how the 719link comes out. 720 721=item * 722 723Going past the 70th column in a verbatim block might be ungracefully 724wrapped by some formatters. 725 726=back 727 728=head1 SEE ALSO 729 730L<perlpodspec>, L<perlsyn/"PODs: Embedded Documentation">, 731L<perlnewmod>, L<perldoc>, L<pod2html>, L<pod2man>, L<podchecker>. 732 733=head1 AUTHOR 734 735Larry Wall, Sean M. Burke 736 737=cut 738