[SP-pm] HERE-DOCS: Forma culta ? Quando usar ?

Luis Motta Campos luismottacampos at yahoo.co.uk
Thu Nov 13 05:52:30 PST 2008


Wendel Scardua wrote:
> 2008/11/13 André Garcia Carneiro <andre.garcia.carneir em terra.com.br>
> 
>> Eu particularmente não gosto de here-docs. Sempre quando vejo um tenho a
>> sensação de não estar mais lidando com
>> Perl...rsrsrs!
> 
> 
> A parte que eu menos gosto do "heredocs" é que a identação fica esquisita...
> Se pelo menos a string que delimita o heredocs pudesse ficar identada com a
> continuação do código... (e eu só uso heredocs praquele "Uso: " mesmo... )

Esta é uma das coisas para as quais eu parei de usar here-docs faz muito
tempo.

Ao invés disso, documenta com POD e usa Pod::Usage para extrair a
documentação "ao vivo". Por exemplo, aqui tem um trechinho do código de
busca de uma aplicação que eu escrevi para facilitar a vida do suporte
técnico do RIPE NCC:

my %options_mapping = (
  'help|h!'               => \$$opts{help},
  'verbose|v+'            => \$$opts{verbose},
  'case-sensitive|c!'     => \$$opts{case},
  'from|begin|f|b=s'      => sub { process_date_expression $opts, @_ },
  'to|end|t|e=s'          => sub { process_date_expression $opts, @_ },
  'type|T=s'              => sub { type_option_handler $opts, @_ },
  'output-file|o=s'       => \$$opts{output_file},
  'regular-expression|r!' => \$$opts{re},
  'version!'              => sub {die "Running $0 version: $VERSION\n"},
);

# Allow '-vh' together with '--verbose --help'
Getopt::Long::Configure('bundling');
GetOptions(%options_mapping)
  or pod2usage( { -verbose => $$opts{verbose} } );
pod2usage( { -exitval => 0, -verbose => $$opts{verbose} } )
  if $$opts{help};

# Last argument in the command line is always the pattern to be used.
if ( !( $$opts{pattern} = pop @ARGV ) ) {
  pod2usage({
    -message => format_error_message(q{Search pattern required.}),
    -verbose => $$opts{verbose},
  });
}


Repare nas chamadas que eu faço para pod2usage(), que é a função de
entrada para o Pod::Usage - elas fazem parse da extensiva documentação
que eu tenho em POD junto com o código, e apresentam isso como "usage" e
"help" entre outras coisas.

Espero que isso te dê idéias.
Putamplexos
-- 
Luis Motta Campos is a software engineer,
Perl Programmer, foodie and photographer.


More information about the SaoPaulo-pm mailing list