[Cascavel-pm] sub-rotina na frente

Adriano Ferreira a.r.ferreira em gmail.com
Sexta Junho 26 06:48:41 PDT 2009


2009/6/26 Fernando <fernandolouis em terra.com.br>

> "did not return a true value"
>

Ah, agora entendi sua dúvida. O seu problema é que ao usar "require" é
necessário que o código carregado retorne um valor verdadeiro. E só a
declaração de sub-rotinas não lhe dará isto.

Por isto, um arquivo como:

# foo.pl
sub add2 { shift() + 2}

vai emitir este erro se carregado com "require 'foo.pl'"

Mas qualquer um destes dois, funciona

# foo2.pl
sub add2 { shift() + 2}
1;

# foo3.pl
1;
sub add2 { shift() + 2}

Você pode se perguntar porque, e a resposta é que a construção "sub
nome_da_sub { ... }" é executada em tempo de compilação e não produz um
valor de retorno útil para os propósitos do "require" (isto vale para o
"use" também que na verdade é definido em termos de "require"). Por isso,
sempre que se constrói um arquivo para ser carregado por require/use (por
exemplo, como um módulo - o que é mais usual em Perl moderno), você deve
garantir que existe uma última expressão avaliada durante a carga do arquivo
que retornará um valor verdadeiro. A forma mais fácil de fazer isso, por
acaso, é colocar

1;

no final do arquivo.

Saudações,
Adriano


>
> e se eu botar logo acima da rotina uma instrução qualquer do tipo $teste =
> ""; aí não dá erro e funciona.
>
> []s
> Fernando
>
> ----- Original Message ----- From: "Giuliani Deon Sanches" <
> giulianisanches em gmail.com>
> To: "Cascavel Perl Mongers" <cascavel-pm em pm.org>
> Sent: Thursday, June 25, 2009 5:48 PM
> Subject: Re: [Cascavel-pm] sub-rotina na frente
>
>
>
> 2009/6/25 Fernando <fernandolouis em terra.com.br>:
>
>> Pessoal, pesquisei e não encontrei...
>>
>> Não é correto começar um programa-perl com uma subrotina?
>>
>> []s,
>> Fernando
>> _______________________________________________
>> Cascavel-pm mailing list
>> Cascavel-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/cascavel-pm
>>
>>
> A principio e teoricamente não. Ta dando erro pra você ? Qual a saida ?
>
> []'s
>
> --
> twitter.com/giulianisanches
> giulianisanches.blogspot.com
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
>
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/cascavel-pm/attachments/20090626/cf40611e/attachment.html>


Mais detalhes sobre a lista de discussão Cascavel-pm