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