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