Plain Old Documentation(POD)は、Perl における単純でプラットフォームに依存しないドキュメンテーションツールである。
POD は必要十分な文法を持つ単純で明快な言語として設計された。書体、画像、色、表などの機構を意図的に排除し、必要な機能だけを持つようにしている。その目的は以下の通りである。
perlpod の筆者は「POD形式は本を書くのには不十分である」と書いているが、PODを拡張した書式で本が実際に書かれている。この拡張版PODには表や脚注の機能があり、オライリーメディアから出ているいくつかのPerlに関する本で使われた。例えば、ラリー・ウォール、ジョン・オーワント、トム・クリスチャンセンの Programming Perl(邦題は『プログラミング Perl』)が有名である。POD を若干拡張修正した版としてMOD があり、Mark Jason Dominus による Higher-Order Perl で使われた。
POD は Perl 関連での文書作成に使われている。Perl 自身、ほとんど全ての公開されている Perl モジュール、多くのスクリプト言語、多くの設計文書、Perl.com などの Perl 関連 Webサイトにある多くの記事、Parrot仮想機械などで使われている。
POD形式のソースコードをそのまま読むことは少ないが、そのままでも読めるように設計されている。一般に、perldoc ツールを使って読んだり、manページ形式に変換したり、HTML形式に変換したりする。
純粋な POD ファイルの拡張子は .pod だが、POD は通常 Perl のソースコードに埋め込んで使われるため、拡張子は .pl または .pm であることが多い。Perl インタプリタの構文解析器はソースコード内の POD 部分を無視するよう設計されている。
.pod
.pl
.pm
これは文法的に正しい POD であり、節の題名についても規約に従っている。
=head1 名前 podsample - POD文書のサンプル =head1 概要 $here->isa(Piece::Of::Code); print <<"END"; このインデントされたブロックはフォーマットされた コードか指示のため、走査されずに、スペースは保持 されるでしょう。 END =head1 記述 これは標準テキストです。これはB<ボールド>、I<イタリック>、 C<$リテラルコード>のテキスト書式を 内部に含んでいます。 =head2 例の一覧 =over 4 =item * これは正丸リストです。 =item * ここに別口があります。 =back =begin html <img src="Example.png" align="right" alt="範例" /> <p> ここに、何らかの埋め込まれたHTMLがあります。 このブロックでは、画像を入れたり、 <span style="color: green">スタイル</span>を 適用するか、HTMLで記述しています。PODパーサは HTML出力中にそれを完全に無視することはありません。 </p> =end html =head1 参照 L<perlpod>, L<perldoc>, L<Pod::Parser>. =head1 著作権 Copyright 2005 J. Random Hacker <[email protected]>. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. =cut
名前
podsample - POD文書のサンプル
$here->isa(Piece::Of::Code); print <<"END"; このインデントされたブロックはフォーマットされた コードか指示のため、走査されずに、スペースは保持 されるでしょう。 END
これは標準テキストです。これはボールド、 イタリック、リテラルコードの テキスト書式を内部に含んでいます。
リテラルコード
ここに、何らかの埋め込まれたHTMLがあります。 このブロックでは、画像を入れたり、 スタイルを 適用するか、HTMLで記述しています。PODパーサは HTML出力中にそれを完全に無視することはありません。
perlpod, perldoc, the Pod::Parser manpage.
Copyright 2005 J. Random Hacker <[email protected]>.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.
<h1><span id="name">名前</span></h1> <p>podsample - POD文書のサンプル</p> <p> </p> <hr /> <h1><span id="synopsis">概要</span></h1> <pre> $here->isa(Piece::Of::Code); print <<"END"; このインデントされたブロックはフォーマットされた コードか指示のため、走査されずに、スペースは保持 されるでしょう。 END</pre> <p> </p> <hr /> <h1><span id="description">記述</span></h1> <p>これは標準テキストです。これは<strong>ボールド</strong>、 <em>イタリック</em>、<ins>アンダーライン</ins>、<code>リテラルコード</code>の テキスト書式を内部に含んでいます。</p> <p> </p> <h2><span id="an_example_list">例の一覧</span></h2> <ul> <li><strong><span id="item_this_is_a_bulleted_list_2e">これは正丸リストです。</span></strong> <li><strong><span id="item_here_27s_another_item_2e">ここに別口があります。</span></strong> </ul> [[ファイル:Example.png|範例|right|thumb]] <p> ここに、何らかの埋め込まれたHTMLがあります。 このブロックでは、画像を入れたり、 <span style="color: green">スタイル</span>を 適用するか、HTMLで記述しています。PODパーサは HTML出力中にそれを完全に無視することはありません。 </p><p> </p> <hr /> <h1><span id="see_also">参照</span></h1> <p><em>perlpod</em>, <em>perldoc</em>, <a href="/Pod/Parser.html">the Pod::Parser manpage</a> <p> </p> <hr /> <h1><span id="copyright">著作権</span></h1> <p>Copyright 2005 J. Random Hacker <[email protected]>.</p> <p>Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts.</p>
PODファイルは ASCII互換の文字符号化方式(例えば Latin-1 や UTF-8)で書かれる。POD の構文解析器はファイルの先頭から POD 形式であるとは見なさず、最初に POD のディレクティブが出て来るところまでは無視する。POD のディレクティブは行の先頭に書かれ、必ず先頭に等号(=)がつく。構文解析器はその後の行がPOD形式であると見なし、"=cut" ディレクティブが先頭にある行までをPOD形式として解釈する。その後、再び別のPODディレクティブが出現するまでは無視する。このため、実行可能なコードを解釈するインタプリタが POD 形式部分を無視するなら、POD 形式と実行可能コードを混在させることができる。
POD の内容は空行で段落分けされる。段落の先頭に空白文字(スペースやタブ)がある場合、その段落は "verbatim paragraphs" として解釈され、中身を整形しない。これはサンプルコードやアスキーアートに使われる。等号記号で始まる段落は "command paragraphs" である。等号の直後に続く文字列が POD ディレクティブとして解釈され、残りの部分はディレクティブに従って整形される。ディレクティブによってはその後の段落にも影響を与える。等号や空白以外で始まる段落は "ordinary paragraphs" として解釈される。
ordinary paragraphs や command paragraphs の中身の構文解析では書式に従って整形が行われる。POD による書式指定は非常に単純である。ボールド、イタリック、アンダーライン、等幅といった書式しかない。また、同一文書内の別の節や他のPOD文書へのリンクも可能である。書式符号には以下の形式がある。
B<bolded text>
B<< bolded text >>
POD 内のコマンド(ディレクティブ)には、4段階の節、番号なしと番号つきのリスト、他の言語の節などがある。他の言語の節は、その言語を解釈する構文解析器による特殊な整形を可能にする。