=for comment Este documento está em formato POD. Para ler este documento, use um formatador de POD, como "perldoc perlpod". =head1 NOME X X perlpod - the Plain Old Documentation format =head1 DESCRIÇÃO POD é uma linguagem de marcação simples utilizada por escrever documentação para Perl, programas Perl, e módulos Perl. Tradutores estão disponíveis para converter POD para vários formatos como texto, HTML, man pages, e mais. Marcação de POD consiste em três tipos básicos de parágrafos: L, L, e L. =head2 Parágrafo ordinário X X A maioria dos parágrafos em sua documentação serão blocos ordinários de texto, como este aqui. Você pode simplesmente digitar o seu texto sem qualquer marcação, utilizando apenas uma linha em branco entre os parágrafos para a separação. Quando formatado, a formatação será mínima, provavelmente com fonte que respeita a proporcionalidade do espaçamento, e talvez até mesmo justificado. Você pode usar codificação de formatação nos parágrafos ordinários, para B, I, C, L, e mais. Tais códigos são explicados na seção "L", abaixo. =head2 Parágrafo literal X X Parágrafo literal são normalmente usados para apresentar um bloco de código ("I") ou outro texto que não requer qualquer formatação especial. Um parágrafo literal é diferente dos demais parágrafos por ter seus primeiros caracteres como espaço ou caracter de tabulação ("I<'tab'>"). (Geralmente, todas as linhas do parágrafo começam com espaços e/ou I<'tab'>.) O texto será reproduzido exatamente como escrito, assumindo a formatação do caractere I<'tab'> com 8 espaços. Não há suporte a nenhum código de formatação especial, assim você não pode grifar ou qualquer outro tipo de formatação. Um '\' significa '\', e nada mais. =head2 Parágrafo de comando X Um parágrafo de comando é usado para tratamento especial de partes grandes de texto, normalmente como títulos ou partes de listas. O parágrafo de comando é iníciado com "=" (normalmente todo conteúdo está apenas em uma linha), seguida por um identificador, seguido de um texto arbitrário que será utilizado pelo comando. Os comandos atualmente reconhecidos são : =pod =head1 Texto do Título =head2 Texto do Título =head3 Texto do Título =head4 Texto do Título =over marcador =item ítem =back =begin formato =end formato =for texto para formatar... =encoding tipo de codificador =cut Explicando-os em detalhes: =over =item C<=head1 I> X<=head1> X<=head2> X<=head3> X<=head4> X X X X =item C<=head2 I> =item C<=head3 I> =item C<=head4 I> Head1 até head4 produzem títulos, head1 que é o mais alto nível. O texto no resto deste parágrafo é o conteúdo do cabeçalho. Por exemplo: =head2 Atributos de Objeto O texto do "Atributos de Objeto" é parte do título acima. (Note que head3 e head4 são adições recentes, não é contemplado por tradutores POD antigos.) O texto nestes comandos de título pode usar códigos formatação, como demonstrado aqui: =head2 Possíveis Valores para C<$/> Tais comandos são explicados dentro da seção "L ", abaixo. =item C<=over I> X<=over> X<=item> X<=back> X X X =item C<=item I> =item C<=back> I, I, e I necessita uma explicação mais detalhada: o B<"=over"> inicia o bloco onde será especificado a lista de ítens utilizando o comando B<"=item">, ou como marcador de parágrafo ( ou um groupo de). Ao término de sua lista, use B<"=back"> para terminar o bloco. O I utiliza a opção B<"=over"> para indicar a distância de deslocamento, geralmente em 'emes' (onde cada 'eme' é a largura de um "M" na fonte utilizado no documento), ou unidades semelhantes; se não existir nenhuma opção de I, será utilizado o padrão de quatro. (E alguns formatadores podem simplesmente ignorar qualquer I que você prover.) Na I no C<=item I>, você pode utilizar codigos de formatação, como demonstrado abaixo : =item Utilizando C<$|> para controlar utilização de memória intermediária Tais comandos são explicados dentro da seção "L ", abaixo. Observe também que existe algumas regras básicas para utilizar o bloco "=over"... "=back" : =over =item * Não use "=item"s fora do bloco "=over" ... "=back". =item * A primeira coisa depois do comando "=over" deverá ser um "=item", a menos que não exista nenhum outro item no bloco "=over" ... "=back". =item * Não utilize comando "=headI" dentro de um bloco "=over" ... "=back". =item * E talvez o mais importante, mantenha os itens consistente: ou utilize "=item * " para todos eles utilizarem marcadores gráficos (geralmente o simbolo de diamante); ou utilize "=item 1.", "=item 2.", etc., para produzir listas numeradas; ou utilize "=item foo", "=item bar", etc. -- isto é, coisas que não se parecem nada marcadores gráficos ou números. Se você iniciar com marcadores gráficos ou números, permaneça com eles, pois os formatadores vão utilizar o primeiro tipo de "=item" para decidir como formatar a lista. =back =item C<=cut> X<=cut> X Termina um bloco de POD, utilize-o num linha em branco, simplestemente escrevendo o comando "=cut", seguido de outra linha em branco. Isto fará que o Perl (e o formatado de POD) saiba que as linhas que segue são códigos de Perl. (A linha em branco antes do "=cut" não é tecnicamente necessário, mais antivos processadores de POD requerem isto.) =item C<=pod> X<=pod> X O comando "=pod" não faz muito coisa por si só, mas ele informa ao Perl (e aos formatadores de POD) que um bloco de POD inicia aqui. Um bloco de POD inicia I comando de parágrafo, sendo assim um comando "=pod" é normalmente utilizado quando você quer iniciar um bloco de POD para um parágrafo ordinário ou parágrafo literal. Por exemplo: =item artigo() Esta é a função artigo. =cut sub artigo { ... } =pod Não esqueça de conferir o valor retornado, como em: artigo () || die "Não foi possível executar artigo !"; =cut =item C<=begin I> X<=begin> X<=end> X<=for> X X X =item C<=end I> =item C<=for I I> Os comandos "=for", "=begin" e "=end" criará um bloco de texto/código/dados que não é interpretado como um texto de POD normal, mas será passado diretamente para formatadores especiais. O formatador que compreender o formato utilizado neste bloco o utilizará, caso contrário este bloco será completamente ignorado. Um comando "=begin I", alguns parágrafos, e um comando "=end I", signifique que o texto/dados no bloco é direcionado para os formatadores que comprrendem o formato especial chamado I. Por exemplo, =begin html

Este é um parágrafo de HTML puro

=end html O comando "=for I I" especifica isto é apenas um parágrafo (iniciando logo após I) neste formato especial. =for htmL

Este é um parágrafo de HTML puro

Isto significa a mesma coisa que o bloco anterior "=begin html"... "=end html". Quer dizer, com "=for", você pode ter o apenas um parágrafo de texto (i.e., o texto em "=for nome_do_formato texto..."), mas com "=begin nome_do_formato" ... "=end nome_do_formato", você pode ter qualquer quantidade de linhas no bloco. (Note que ainda deve haver uma linha em branco depois do comando "=begin" e uma linha em branco antes o "=end" comando. Aqui são alguns exemplos de como usar estes comandos : =begin html
Figura 1.

=end html =begin texto --------------- | foo | | barra | --------------- ^^^^ Figure 1. ^^^^ =end texto Alguns nomes de formatos atualmente conhecidos pelo formadores incluem "roff", "man", "latex", "tex", "text", e "html." (Alguns formatadores tratarão alguns destes como sinônimos.) O nome de formato de I<"comment"> é utilizado apenas para a criação de notas (presumivelmente para você) e isso não aparecerá em qualquer versão formatada de um documento POD: =for comment Tenha certeza que todas as opções disponíveis estão documentadas! Alguns I requererá um cólon principal (como em C<"=for :nome_do_formato">, ou C<"=begin :nome_do_formato" ... "=end:nome_do_formato">), para informar que text não é algum tipo de dados, mas na veradade I<é> texto de POD (i.e., contendo formatação possivelmente codifica) isso simplesmente não é para ser formatado normalmente (por exemplo, talvez não seja um parágrafo de uso normal, mas poder ser formatado como uma nota de rodapé). =item C<=encoding I> X<=encoding> X Este comando é usado para declarar a tipo de codificação de um documento. A maioria dos usuários não precisarão disto; mas se sua codificação não é o US-ASCII ou Latino-1, então insira o comando C<=encoding I> no documento para indicar ao formatador POD como decodifica-lo. Para I, utilize um nome reconhecido pelo módulo L. Exemplos: =encoding utf8 =encoding koi8-r =encoding ShiftJIS =encoding big5 =back E não esqueça, ao usar qualquer comando, o comando dura até o término de seu I, não sua linha. Assim no exemplos abaixo, você pode ver que todo comando precisa do espaço em branco depois dele, para terminar seu parágrafo. Alguns exemplos de listas incluem: =over =item * Primeiro item =item * Segundo item =back =over =item Foo() Descrição da função Foo =item Bar() Descrição da função Bar =back =head2 Códigos de formatação X X X X Em parágrafos ordinários e em alguns parágrafos de comando, vários códigos de formatação (a.k.a. "seqüências interiores") pode ser usado: =for comment "seqüências interiores" são termos desatualizado. Prefira "formatação codificada". =over =item CtextoE> -- texto itálico X X<< IZ<><> >> X X Usado para enfatizar ("Ccuidadoso!E>") e para os parâmetros ("CIDENTIFICADORE>") =item CtextoE> -- texto em negrito X X<< BZ<><> >> X X Usado para argumentos ("C-nE argumento>"), programas ("CchfnE para isso>"), para enfatizar ("Ccuidadoso!E>"), e assim por diante ("Cauto-reanimaçãoE>"). =item CcódigoE> -- texto de código X X << CZ<><>>> X X Utiliza uma fonte de máquina de escrever para o código, ou dá alguma outra indicação de que isto representa texto de programa ("Cgmtime ($^T)E>") ou alguma outra forma de I("C drwxr-xr-xE>"). =item CnomeE>--um hiperlink X X< <> >> X X Há várias sintaxes, listadas abaixo. Nas sintaxes dadas, C, C, e C não pode conter os caractere '/' e' |'; e qualquer'<' ou'> ' deveria ser encontrado. =over =item * CnomeE> Referência para uma página do manual de Perl (por exemplo, CNet::PingE>). Nota que o C não deverá conter espaços. Esta sintaxe também é usado ocasionalmente para referências a UNIX I, como em Ccrontab (5)E>. =item * Cnome/"seção"E> ou Cnome/seçãoE> Referência a uma seção em outra página do manual. Por exemplo, Cperlsyn/"For Loops"E> =item * C/"seção"E> ou C/seçãoE> ou C"seção"E> Referência uma seção nesta página manual. Por exemplo, C/"Métodos de Objeto" "E> =back Uma seção é iniciada pelo comando I o I. Por exemplo, Cperlvar/$.E> ou Cperlvar/"$."E> ambos referência à uma seção iniciada por "C<=item $.>" em perlvar. E Cperlsyn /For LoopsE> ou Cperlsyn/"For Loops"E> ambos referência para a seção iniciada por "C<=head2 For Loops>" em perlsyn. Para controlar o texto que aparecerá, você deve utilizar "Ctexto|...E>", como em: =over =item * Ctexto|nomeE> Referência este texto a uma página do manual. Por exemplo, CMensagens de erro de Perl|perldiagE> =item * Ctexto|nome"seção"E> ou Ctexto|nome/seçãoE> Referência este texto à uma seção de uma página do manual. Por exemplo, Cinstruções de SWITCH|perlsyn/"Básico de blocos e Instruções de Switch"E> =item * Ctexto|/"seção"E> ou Ctexto|/seçãoE> ou Ctexto|"seção"E> Referência este texto a uma seção nesta página manual. Por exemplo, Cos vários atributos|/"Member Data"E> =back ou você pode referênciar a uma página de web: =over =item * CURLE> Referência uma URL. Por exemplo, C http://www.perl.org/E>. Mas nota que não há nenhuma sintaxe correspondente Ctexto|URLE>, por várias razões. =back =item Cescape> -- caracteres do tipo I X X<< EZ<><> >> X X Bem parecido o HTML/XML C<&I;> "referências de entidade": =over =item * CltE> -- o literal E (menos que) =item * CgtE> -- o literal E (maior que) =item * CverbarE> -- a literal | (barra vertical) =item * CsolE> = o literal / (delimitador de diretório) Os quatros comandos anterios são opcionais, menos em alguns códigos de formatação, notavelmente C... E> e quando precedido por uma letra maiúscula. =item * ChtmlnameE> Algumas nomes de entidade HTML não-numérica, como CeacuteE>, significando a mesma coisa que C<é> em HTML--i.e., o mesmo que 'E' minúsculo com um acento agudo. =item * CnúmeroE> O representação do caracterer em ASCII/Latin-1/Unicode do número informado. Números iniciados com "0x" indicam que estão em I, como C0x201EE>. Números iniciados com "0" indicam que estão em I, como em C075E>. Caso contrário o I será interpretado como sendo em decimal, como em C181E>. Note que os antigos formatadores de POD podem não compreender os formatos númericos octaldecimais ou hexadecimais, e eles podem não interpretar caracteres acima de 255. (Algum formatters podem ter até mesmo usar transformações baseados em caracteres Latin-1, como C transformando em eacuteE> quando na verdade o requerido é simplesmente o "e".) =back =item Cnome de arquivo> -- usado para nome de arquivos X X<<>>>X X Tipicamente exibido em itálicos. Exemplo: "C.cshrcE>" =item CtextoE> -- texto contém espaços que não podem ser quebrados X X<< SZ<><> >> X X Isto significa que as palavras no I não deveria ser quebrado para a próxima linha. Exemplo: S$x ? $y : $ZE>>. =item Cnome do tópicoE>--uma entrada de índice X X<< XZ<><> >> X X Isto é ignorado pela maioria do formatadores, mas alguns podem usar isto por construir índices. Textos com este código de formatação não são apresentado no texto. Exemplo: Cabsolutizing relative URLs> =item CE> -- um código de formatação nulo (efeito zero) X X<< ZZ<><> >> X X Isto é raramente utilizado. É algumas vezes um modo para contornar a utilização do código EE...E. Por exemplo, em vez de "CltE3>" (para "NE3") você poderia escrever "CEE3>" (o "ZEE" quebra "N" e o "E" assim eles não podem ser considerados a parte de um (fictício) "NE...E" código. =for comment This was formerly explained as a "zero-width character". But it in most parser models, it parses to nothing at all, as opposed to parsing as if it were a E or E, which are REAL zero-width characters. So "width" and "character" are exactly the wrong words. =back A maio parte do tempo, você precisará de só um único conjunto de parênteses de ângulo para delimite o começo e término de formatar códigos. Porém, às vezes você vai querer pôr um parêntese de ângulo real ( um sinal maior-que,'>') dentro de um código de formatação. Isto é particularmente comum ao usar um código de formatação para destacar um pedaço de código. Como tudo em Perl, há mais que um modo para fazer isto. Um modo é utilizar caracateres escape,usando um C código: C<$a E=E $b> Isto produzirá: "C<$a E=E $b>" Um mais legível, e talvez modo mais "claro" é usar um substituto conjunto de delimiters que não requer um simples">" para ser I. Com o formadores de POD que é padronizado com perl5.5.660, dublos parênteses de ângulo ("<<" e">>") talvez possa ser utiilzado IPor exemplo, faça o seguinte truque: X C<< $a <=> $B >> Na realidade, você pode usar tantos ângulo-parênteses repetidos quanto você desejar, desde que seja o mesmo número deles na abertura e fechamento do delimitador, e ter a certeza que espaços em branco segue o último '<' delimitador de abertura, e certeza que espaços em branco segue o primeiro '>' do delimitador final. (Os espaços em braços são ignorados.) Assim o seguindo também trabalhará: X C <<< $a <=> $b >>> C <<<< $a <=> $b >>>> E todos eles querem dizer exatamente igual a isto: C<$a E=E $b> Como um exemplo adicional, isto significa que se você quisesse pôr estes pedaço de código no estilo em C(código) estilo: open (X,">>thing.dat") || die $!; $foo->barra(); você pôde escrever assim: C<<< open(X, ">>thing.dat") || die $! >>> C<< $foo->barra(); >> que é presumivelmente mais fácil ler que o modo velho: CEthing.dat") || die $!> C<$foo-Ebar();> Isto é atualmente reconhecido pelo pod2text (Pod::Text), pod2man (Pod::Man), e qualquer outro pod2xxx ou tradutores de Pod::Xxxx que usam Pod::Parser 1.093 ou mas recente, ou Pod::Tree 1.02 ou mas recente. =head2 O objetivo X O objetivo é a simplicidade de uso, não o poder de expressão. Onde os parágrafos se pareçam com parágrafos (em formato de bloco), de forma que eles se alinhem visualmente, de que forma que eu possa executar o C para reformatar-los facilmente (isso é F7 na minha versão do B, ou Esc Q na minha versão do B). Eu queria que o tradutor sempre considerasse o C<'>, o C<`> e o C<"> em seu estado natural, no modo literal, assim eu puderia copiá-lo no programa que estou trabalhando, deslocar com espaços, e ter-lo funcionando, literalmente. O formato de POD não possue todos os recursos para escrever um livro. POD tem a intenção apenas de ser um formato de fonte comum para nroff, HTML, TeX, e outras linguagens de marcação, como usado para documentação online. Existem tradutores para B, B, B (isso é para nroff (1) e troff (1)), B, e B. Vários outros estão disponíveis em CPAN. =head2 Embute PODs em Módulos de Perl X Você pode embutir documentação de POD em seus módulos e programas Perl. Inicie sua documentação com uma linha vazia, um comando "= head1" no inicio, e termina isto com um comando "=cut" e uma linha vazia. Perl ignorará o texto POD. Veja quaisquer um dos módulos de biblioteca Perl como exemplos. Se você vai pôr seu POD no final do arquivo, e está usando marcação de corte __END__ ou __DATA__, tenha certeza de colocar linha vazia antes do primeiro comando de POD. __END__ =head1 NOME Time::Local - compute eficazmente o tempo local e GMT Sem aquela linha vazia antes do "=head1", muitos tradutores não vão reconheceu o "=head1" como iniciando um bloco de POD. =head2 Dicas para escrever POD =over =item * X X O comando B existe para conferir a sintaxe do POD apresentando os erros e as advertências. Por exemplo, ele verifica por linhas completamente em branco nos blocos POD e por comandos desconhecidos e códigos de formatação. Você pode também submeter seu documento por um ou mais tradutores e revisar o resultado, ou imprimir e revisá-lo. Alguns dos problemas encontrados podem ser problemas nos tradutores, que você pode ou não quer contonar. =item * Se você está mais familiarizado em escrever em HTML que em POD, você pode pode escrever sua documentação em HTML simples, e convertendo-lo para POD com o módulo experimental L, (disponível no CPAN), e observar o código resultante. O módulo experimental L no CPAN também poderia ser útil. =item * Muitos tradutores de POD antigos requerem linhas antes de todo comando POD e depois de cada comando de POD (incluindo "=cut!") ter linha com espaço em branco. Ter algo assim: # - - - - - - - - - - - - =item $traque->estrondo() Este objeto detona um traque ruidoso. =cut sub estrondo { ... ...fará que alguns tradutores de POD falhará completamente ao ver o bloco de POD. Ao invés, tem assim: # - - - - - - - - - - - - =item $traque->estrondo() Este objeto detona um traque ruidoso. =cut sub estrondo { ... =item * Alguns tradutores de POD antigos requerem parágrafos (inclusive comando de parágrafos como "=head2 Funciona") ser separado por linhas I vazias. Se você tiver uma linha aparentemente vazia com alguns espaços nela, isto poderia não contar como um separador para esses tradutores, e isso poderia causar formatação estranha. =item * Tradutores antigos podem adicionar palavras ao redor de um LEE, desda forma CFoo::BarE> pode ser traduzido para "o manpage de Foo::Bar", por exemplo. Assim você não deveria escrever coisas como CfooE documentação>, se você quer o documento traduzido para facilitar a leitura -- ao invés escreva CFoo::Bar|Foo::BarE documentação> ou C a documentação de Foo::Bar|Foo::BarE>, para controlar o vai sai. =item * Ultrapassando a 70ª coluna num bloco literal pode ser desagradavelmente embaralhado por alguns formadores. =back =head1 VEJA TAMBÉM L, L, L, L, L, L, L. =head1 AUTOR Larry Wall, Sean M. Burke =cut =head1 TRADUZINDO Solli Moreira Honório =cut