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