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 or 290CP-1252 versus 291UTF-8 encoding, but they may guess wrong. It's best to be explicit if 292you use anything besides strict ASCII. Examples: 293 294 =encoding latin1 295 296 =encoding utf8 297 298 =encoding koi8-r 299 300 =encoding ShiftJIS 301 302 =encoding big5 303 304C<=encoding> affects the whole document, and must occur only once. 305 306=back 307 308And don't forget, all commands but C<=encoding> last up 309until the end of its I<paragraph>, not its line. So in the 310examples below, you can see that every command needs the blank 311line after it, to end its paragraph. (And some older Pod translators 312may require the C<=encoding> line to have a following blank line as 313well, even though it should be legal to omit.) 314 315Some examples of lists include: 316 317 =over 318 319 =item * 320 321 First item 322 323 =item * 324 325 Second item 326 327 =back 328 329 =over 330 331 =item Foo() 332 333 Description of Foo function 334 335 =item Bar() 336 337 Description of Bar function 338 339 =back 340 341 342=head2 Formatting Codes 343X<POD, formatting code> X<formatting code> 344X<POD, interior sequence> X<interior sequence> 345 346In ordinary paragraphs and in some command paragraphs, various 347formatting codes (a.k.a. "interior sequences") can be used: 348 349=for comment 350 "interior sequences" is such an opaque term. 351 Prefer "formatting codes" instead. 352 353=over 354 355=item C<IE<lt>textE<gt>> -- italic text 356X<I> X<< IZ<><> >> X<POD, formatting code, italic> X<italic> 357 358Used for emphasis ("C<be IE<lt>careful!E<gt>>") and parameters 359("C<redo IE<lt>LABELE<gt>>") 360 361=item C<BE<lt>textE<gt>> -- bold text 362X<B> X<< BZ<><> >> X<POD, formatting code, bold> X<bold> 363 364Used for switches ("C<perl's BE<lt>-nE<gt> switch>"), programs 365("C<some systems provide a BE<lt>chfnE<gt> for that>"), 366emphasis ("C<be BE<lt>careful!E<gt>>"), and so on 367("C<and that feature is known as BE<lt>autovivificationE<gt>>"). 368 369=item C<CE<lt>codeE<gt>> -- code text 370X<C> X<< CZ<><> >> X<POD, formatting code, code> X<code> 371 372Renders code in a typewriter font, or gives some other indication that 373this represents program text ("C<CE<lt>gmtime($^T)E<gt>>") or some other 374form of computerese ("C<CE<lt>drwxr-xr-xE<gt>>"). 375 376=item C<LE<lt>nameE<gt>> -- a hyperlink 377X<L> X<< LZ<><> >> X<POD, formatting code, hyperlink> X<hyperlink> 378 379There are various syntaxes, listed below. In the syntaxes given, 380C<text>, C<name>, and C<section> cannot contain the characters 381'/' and '|'; and any '<' or '>' should be matched. 382 383=over 384 385=item * 386 387C<LE<lt>nameE<gt>> 388 389Link to a Perl manual page (e.g., C<LE<lt>Net::PingE<gt>>). Note 390that C<name> should not contain spaces. This syntax 391is also occasionally used for references to Unix man pages, as in 392C<LE<lt>crontab(5)E<gt>>. 393 394=item * 395 396C<LE<lt>name/"sec"E<gt>> or C<LE<lt>name/secE<gt>> 397 398Link to a section in other manual page. E.g., 399C<LE<lt>perlsyn/"For Loops"E<gt>> 400 401=item * 402 403C<LE<lt>/"sec"E<gt>> or C<LE<lt>/secE<gt>> 404 405Link to a section in this manual page. E.g., 406C<LE<lt>/"Object Methods"E<gt>> 407 408=back 409 410A section is started by the named heading or item. For 411example, C<LE<lt>perlvar/$.E<gt>> or C<LE<lt>perlvar/"$."E<gt>> both 412link to the section started by "C<=item $.>" in perlvar. And 413C<LE<lt>perlsyn/For LoopsE<gt>> or C<LE<lt>perlsyn/"For Loops"E<gt>> 414both link to the section started by "C<=head2 For Loops>" 415in perlsyn. 416 417To control what text is used for display, you 418use "C<LE<lt>text|...E<gt>>", as in: 419 420=over 421 422=item * 423 424C<LE<lt>text|nameE<gt>> 425 426Link this text to that manual page. E.g., 427C<LE<lt>Perl Error Messages|perldiagE<gt>> 428 429=item * 430 431C<LE<lt>text|name/"sec"E<gt>> or C<LE<lt>text|name/secE<gt>> 432 433Link this text to that section in that manual page. E.g., 434C<LE<lt>postfix "if"|perlsyn/"Statement Modifiers"E<gt>> 435 436=item * 437 438C<LE<lt>text|/"sec"E<gt>> or C<LE<lt>text|/secE<gt>> 439or C<LE<lt>text|"sec"E<gt>> 440 441Link this text to that section in this manual page. E.g., 442C<LE<lt>the various attributes|/"Member Data"E<gt>> 443 444=back 445 446Or you can link to a web page: 447 448=over 449 450=item * 451 452C<LE<lt>scheme:...E<gt>> 453 454C<LE<lt>text|scheme:...E<gt>> 455 456Links to an absolute URL. For example, C<LE<lt>http://www.perl.org/E<gt>> or 457C<LE<lt>The Perl Home Page|http://www.perl.org/E<gt>>. 458 459=back 460 461=item C<EE<lt>escapeE<gt>> -- a character escape 462X<E> X<< EZ<><> >> X<POD, formatting code, escape> X<escape> 463 464Very similar to HTML/XML C<&I<foo>;> "entity references": 465 466=over 467 468=item * 469 470C<EE<lt>ltE<gt>> -- a literal E<lt> (less than) 471 472=item * 473 474C<EE<lt>gtE<gt>> -- a literal E<gt> (greater than) 475 476=item * 477 478C<EE<lt>verbarE<gt>> -- a literal | (I<ver>tical I<bar>) 479 480=item * 481 482C<EE<lt>solE<gt>> -- a literal / (I<sol>idus) 483 484The above four are optional except in other formatting codes, 485notably C<LE<lt>...E<gt>>, and when preceded by a 486capital letter. 487 488=item * 489 490C<EE<lt>htmlnameE<gt>> 491 492Some non-numeric HTML entity name, such as C<EE<lt>eacuteE<gt>>, 493meaning the same thing as C<é> in HTML -- i.e., a lowercase 494e with an acute (/-shaped) accent. 495 496=item * 497 498C<EE<lt>numberE<gt>> 499 500The ASCII/Latin-1/Unicode character with that number. A 501leading "0x" means that I<number> is hex, as in 502C<EE<lt>0x201EE<gt>>. A leading "0" means that I<number> is octal, 503as in C<EE<lt>075E<gt>>. Otherwise I<number> is interpreted as being 504in decimal, as in C<EE<lt>181E<gt>>. 505 506Note that older Pod formatters might not recognize octal or 507hex numeric escapes, and that many formatters cannot reliably 508render characters above 255. (Some formatters may even have 509to use compromised renderings of Latin-1/CP-1252 characters, like 510rendering C<EE<lt>eacuteE<gt>> as just a plain "e".) 511 512=back 513 514=item C<FE<lt>filenameE<gt>> -- used for filenames 515X<F> X<< FZ<><> >> X<POD, formatting code, filename> X<filename> 516 517Typically displayed in italics. Example: "C<FE<lt>.cshrcE<gt>>" 518 519=item C<SE<lt>textE<gt>> -- text contains non-breaking spaces 520X<S> X<< SZ<><> >> X<POD, formatting code, non-breaking space> 521X<non-breaking space> 522 523This means that the words in I<text> should not be broken 524across lines. Example: S<C<SE<lt>$x ? $y : $zE<gt>>>. 525 526=item C<XE<lt>topic nameE<gt>> -- an index entry 527X<X> X<< XZ<><> >> X<POD, formatting code, index entry> X<index entry> 528 529This is ignored by most formatters, but some may use it for building 530indexes. It always renders as empty-string. 531Example: C<XE<lt>absolutizing relative URLsE<gt>> 532 533=item C<ZE<lt>E<gt>> -- a null (zero-effect) formatting code 534X<Z> X<< ZZ<><> >> X<POD, formatting code, null> X<null> 535 536This is rarely used. It's one way to get around using an 537EE<lt>...E<gt> code sometimes. For example, instead of 538"C<NEE<lt>ltE<gt>3>" (for "NE<lt>3") you could write 539"C<NZE<lt>E<gt>E<lt>3>" (the "ZE<lt>E<gt>" breaks up the "N" and 540the "E<lt>" so they can't be considered 541the part of a (fictitious) "NE<lt>...E<gt>" code). 542 543=for comment 544 This was formerly explained as a "zero-width character". But it in 545 most parser models, it parses to nothing at all, as opposed to parsing 546 as if it were a E<zwnj> or E<zwj>, which are REAL zero-width characters. 547 So "width" and "character" are exactly the wrong words. 548 549=back 550 551Most of the time, you will need only a single set of angle brackets to 552delimit the beginning and end of formatting codes. However, 553sometimes you will want to put a real right angle bracket (a 554greater-than sign, '>') inside of a formatting code. This is particularly 555common when using a formatting code to provide a different font-type for a 556snippet of code. As with all things in Perl, there is more than 557one way to do it. One way is to simply escape the closing bracket 558using an C<E> code: 559 560 C<$a E<lt>=E<gt> $b> 561 562This will produce: "C<$a E<lt>=E<gt> $b>" 563 564A more readable, and perhaps more "plain" way is to use an alternate 565set of delimiters that doesn't require a single ">" to be escaped. 566Doubled angle brackets ("<<" and ">>") may be used I<if and only if there is 567whitespace right after the opening delimiter and whitespace right 568before the closing delimiter!> For example, the following will 569do the trick: 570X<POD, formatting code, escaping with multiple brackets> 571 572 C<< $a <=> $b >> 573 574In fact, you can use as many repeated angle-brackets as you like so 575long as you have the same number of them in the opening and closing 576delimiters, and make sure that whitespace immediately follows the last 577'<' of the opening delimiter, and immediately precedes the first '>' 578of the closing delimiter. (The whitespace is ignored.) So the 579following will also work: 580X<POD, formatting code, escaping with multiple brackets> 581 582 C<<< $a <=> $b >>> 583 C<<<< $a <=> $b >>>> 584 585And they all mean exactly the same as this: 586 587 C<$a E<lt>=E<gt> $b> 588 589The multiple-bracket form does not affect the interpretation of the contents of 590the formatting code, only how it must end. That means that the examples above 591are also exactly the same as this: 592 593 C<< $a E<lt>=E<gt> $b >> 594 595As a further example, this means that if you wanted to put these bits of 596code in C<C> (code) style: 597 598 open(X, ">>thing.dat") || die $! 599 $foo->bar(); 600 601you could do it like so: 602 603 C<<< open(X, ">>thing.dat") || die $! >>> 604 C<< $foo->bar(); >> 605 606which is presumably easier to read than the old way: 607 608 C<open(X, "E<gt>E<gt>thing.dat") || die $!> 609 C<$foo-E<gt>bar();> 610 611This is currently supported by pod2text (Pod::Text), pod2man (Pod::Man), 612and any other pod2xxx or Pod::Xxxx translators that use 613Pod::Parser 1.093 or later, or Pod::Tree 1.02 or later. 614 615=head2 The Intent 616X<POD, intent of> 617 618The intent is simplicity of use, not power of expression. Paragraphs 619look like paragraphs (block format), so that they stand out 620visually, and so that I could run them through C<fmt> easily to reformat 621them (that's F7 in my version of B<vi>, or Esc Q in my version of 622B<emacs>). I wanted the translator to always leave the C<'> and C<`> and 623C<"> quotes alone, in verbatim mode, so I could slurp in a 624working program, shift it over four spaces, and have it print out, er, 625verbatim. And presumably in a monospace font. 626 627The Pod format is not necessarily sufficient for writing a book. Pod 628is just meant to be an idiot-proof common source for nroff, HTML, 629TeX, and other markup languages, as used for online 630documentation. Translators exist for B<pod2text>, B<pod2html>, 631B<pod2man> (that's for nroff(1) and troff(1)), B<pod2latex>, and 632B<pod2fm>. Various others are available in CPAN. 633 634 635=head2 Embedding Pods in Perl Modules 636X<POD, embedding> 637 638You can embed Pod documentation in your Perl modules and scripts. Start 639your documentation with an empty line, a "=head1" command at the 640beginning, and end it with a "=cut" command and an empty line. The 641B<perl> executable will ignore the Pod text. You can place a Pod 642statement where B<perl> expects the beginning of a new statement, but 643not within a statement, as that would result in an error. See any of 644the supplied library modules for examples. 645 646If you're going to put your Pod at the end of the file, and you're using 647an C<__END__> or C<__DATA__> cut mark, make sure to put an empty line there 648before the first Pod command. 649 650 __END__ 651 652 =head1 NAME 653 654 Time::Local - efficiently compute time from local and GMT time 655 656Without that empty line before the "=head1", many translators wouldn't 657have recognized the "=head1" as starting a Pod block. 658 659=head2 Hints for Writing Pod 660 661=over 662 663=item * 664X<podchecker> X<POD, validating> 665 666The B<podchecker> command is provided for checking Pod syntax for errors 667and warnings. For example, it checks for completely blank lines in 668Pod blocks and for unknown commands and formatting codes. You should 669still also pass your document through one or more translators and proofread 670the result, or print out the result and proofread that. Some of the 671problems found may be bugs in the translators, which you may or may not 672wish to work around. 673 674=item * 675 676If you're more familiar with writing in HTML than with writing in Pod, you 677can try your hand at writing documentation in simple HTML, and converting 678it to Pod with the experimental L<Pod::HTML2Pod|Pod::HTML2Pod> module, 679(available in CPAN), and looking at the resulting code. The experimental 680L<Pod::PXML|Pod::PXML> module in CPAN might also be useful. 681 682=item * 683 684Many older Pod translators require the lines before every Pod 685command and after every Pod command (including "=cut"!) to be a blank 686line. Having something like this: 687 688 # - - - - - - - - - - - - 689 =item $firecracker->boom() 690 691 This noisily detonates the firecracker object. 692 =cut 693 sub boom { 694 ... 695 696...will make such Pod translators completely fail to see the Pod block 697at all. 698 699Instead, have it like this: 700 701 # - - - - - - - - - - - - 702 703 =item $firecracker->boom() 704 705 This noisily detonates the firecracker object. 706 707 =cut 708 709 sub boom { 710 ... 711 712=item * 713 714Some older Pod translators require paragraphs (including command 715paragraphs like "=head2 Functions") to be separated by I<completely> 716empty lines. If you have an apparently empty line with some spaces 717on it, this might not count as a separator for those translators, and 718that could cause odd formatting. 719 720=item * 721 722Older translators might add wording around an LE<lt>E<gt> link, so that 723C<LE<lt>Foo::BarE<gt>> may become "the Foo::Bar manpage", for example. 724So you shouldn't write things like C<the LE<lt>fooE<gt> 725documentation>, if you want the translated document to read sensibly. 726Instead, write C<the LE<lt>Foo::Bar|Foo::BarE<gt> documentation> or 727C<LE<lt>the Foo::Bar documentation|Foo::BarE<gt>>, to control how the 728link comes out. 729 730=item * 731 732Going past the 70th column in a verbatim block might be ungracefully 733wrapped by some formatters. 734 735=back 736 737=head1 SEE ALSO 738 739L<perlpodspec>, L<perlsyn/"PODs: Embedded Documentation">, 740L<perlnewmod>, L<perldoc>, L<pod2html>, L<pod2man>, L<podchecker>. 741 742=head1 AUTHOR 743 744Larry Wall, Sean M. Burke 745 746=cut 747