== # perlpod 정리 ==
Perldoc:perlpod 요약
Pod 마크업을 이루는 세 가지 기본적인 단락 : ordinary, verbatim, command
=== # Ordinary Paragraph ===
* 일반적인 단락.
* 단락 전후에 빈 줄이 있어야 함
* 자동 줄바꿈, 글꼴 여백 조정, 정렬 등의 최소한의 효과만 적용됨
* 포매팅 코드를 사용하여 여러 가지 효과를 줄 수 있음.
=== # Verbatim Paragraph ===
* 단락의 첫 글자가 공백이나 탭으로 시작 (보통은 단락의 모든 행을 공백이나 탭으로 시작하게 작성)
* 코드블록를 나타낼 때
* 특별한 처리나 포매팅 적용이 되지 않고 텍스트 원문을 그대로 보이고 싶을 때
* 아무런 포매팅이 적용되지 않음
=== # Command Paragraph ===
* 표제, 목록 등 특별한 처리를 하도록 지시
* ''=식별자 추가텍스트'' 형태
* 현재 지원되는 명령들:
{{{
=pod
=head1 Heading Text
=head2 Heading Text
=head3 Heading Text
=head4 Heading Text
=over indentlevel
=item stuff
=back
=begin format
=end format
=for format text...
=encoding type
=cut
}}}
=head1 ''Heading Text''
=head2 ''Heading Text''
=head3 ''Heading Text''
=head4 ''Heading Text''
* 표제를 생성:
{{{#!vim pod
=head2 Object Attributes
}}}
* head3과 head4는 오래된 Pod 번역기에서 지원하지 않을 수 있음
* 표제의 텍스트에도 포매팅 코드를 사용 가능:
{{{#!vim pod
=head2 Possible Values for C<$/>
}}}
=over ''indentlevel''
=item ''stuff...''
=back
* "=item"을 사용하여 생성한 목록이 들어있을 영역을 지정할 때 사용
* 일반 단락들을 그룹지어 들여쓸 영역을 지정할 때도 사용
* "=over"로 시작해서 "=back"으로 끝냄
* ''indentlevel''은 얼마나 들여쓸지를 나타냄. (어떤 포매터에서는 무시됨)
* ''stuff''에는 포매팅 코드 사용 가능:
{{{#!vim pod
=item Using C<$|> to Control Buffering
}}}
* "=over" ... "=back" 영역을 사용할 때 적용되는 규칙
** "=item"을 영역 밖에서 사용하지 말 것
** 영역 내에 "=item"이 하나라도 있을 경우는, "=over" 명령 바로 다음에 "=item"이 나와야 한다.
** 영역 안에는 "=head''n''" 명령을 두지 말 것
** (중요) 아이템을 일관성 있게 표시할 것. 한 영역 안에서 다음 세 가지 중 하나를 택해서 그것만 사용하라.
*** "=item *" - 번호 없는 리스트
*** "=item ''숫자''." - 번호 있는 리스트
*** "=item foo", "=item bar" 등 - 불릿이나 번호가 없는 리스트
=cut
* Pod 블록을 종료하고 Perl 코드가 다시 진행됨을 알림
* 빈 줄, "=cut", 빈 줄 형태로 쓸 것
=pod
* Pod 블록이 시작됨을 알림.
* 아무 명령 단락으로도 Pod 블록을 시작할 수 있으므로, "=pod"는 Pod블록을 보통의 단락이나 원문 단락으로 시작하고 싶을 때 사용:
{{{#!vim perl
=item stuff()
This function does stuff.
=cut
sub stuff {
...
}
=pod
Remember to check its return value, as in:
stuff() || die "Couldn't do stuff!";
=cut
}}}
=begin ''formatname''
=end ''formatname''
=for ''formatname'' ''text...''
* 특정한 포매터에만 전달되는 내용을 담는 영역을 지정
** 해당 포맷을 사용할 수 있는 포매터만 이 영역의 내용을 인식하고, 다른 포매터는 무시함
* "=begin ''formatname''" ... "=end ''formatname''" - begin과 end사이의 영역에 대하여 적용:
{{{#!vim pod
=begin html
This is a raw HTML paragraph
=end html
}}}
* "=for ''formatname text...''" - 이 단락의 ''text...'' 부분에 대해서 적용:
{{{#!vim pod
=for html
This is a raw HTML paragraph
}}}
* 예:
{{{#!vim pod
=begin html
Figure 1.

=end html
=begin text
---------------
| foo |
| bar |
---------------
^^^^ Figure 1. ^^^^
=end text
}}}
* 현재 포매터들이 인식하는 포맷들 : roff, man, latex, tex, text, html 등
* "comment" 포맷 - Pod 문서에 나타나지 않음. 작성자 자신의 기록 용도 등으로 사용:
{{{#!vim pod
=for comment
Make sure that all the available options are documented!
}}}
* 어떤 포맷명은 앞에 콜론이 붙어서 (":formatname") 텍스트가 raw data가 아니라, 일반적이지 않은 포매팅을 적용해야 할 Pod 텍스트(포매팅 코드를 포함하고 있을 수 있는)임을 알려줄 수 있다. (예를 들어 보통의 단락이 아니라 각주로 포매팅되어야 하는 경우)
=encoding ''encodingname''
* 문서의 인코딩을 선언:
{{{#!vim pod
=encoding utf8
=encoding koi8-r
=encoding ShiftJIS
=encoding big5
}}}
'''유의:''' 명령어가 있는 라인이 아니라 명령어가 포함된 단락의 끝날 때 그 명령어가 끝난다. 따라서 각 명령어는 단락을 끝내기 위해 바로 뒤에 빈 라인이 있어야 한다:
{{{#!vim pod
=over
=item *
First item
=item *
Second item
=back
=over
=item Foo()
Description of Foo function
=item Bar()
Description of Bar function
=back
}}}
=== # Formatting Codes ===
* I - 이탤릭
** 강조 (be I)
** 파라메터 (redo I