[SP-pm] Subs

Danie Vinciguerra dan.vinciguerra at gmail.com
Fri Mar 22 20:15:27 PDT 2013


Boa noite,

> 1. Tenho algumas funções (sub) que são comuns a mais de um aplicativo. 
> Qual a forma mais simples, prática e elegante de compartilha-las entre 
> vários scripts, sendo que todos ficam no mesmo diretório? Hoje, tenho 
> o mesmo código repetido dentro do arquivo de cada script.
A melhor forma na minha opinião seria criar um modulo com as funções ou 
métodos comuns para serem usados por todos os scripts do seu projeto. 
(estou assumindo que não esta usando orientação a objetos)
http://perldoc.perl.org/Exporter.html


>
> 2. Tenho algumas funções (sub) que precisam retornar mais de uma 
> informação, as vezes até 5. Hoje como não sei fazer isso, 
> declaro variáveis no inicio do script e antes de chamar a sub, atribuo 
> "undef" para as variáveis. Dentro da sub eu atribuo os valores que 
> preciso a elas e depois da sub eu leio essas variáveis. Não me causa 
> problema, só acho estranho e pouco elegante. Exemplo de retorno: Se 
> deu erro (1 ou 0), Registro que deu erro (numérico), Descrição do Erro 
> (string), Se conseguiu cancelar do IPBX (1 ou 0).
Pode criar uma classe e retorná-la com as propriedades preenchidas 
conforme a sua necessidade...
http://perldoc.perl.org/perlootut.html

>
> 3. Declaro as funções (sub) assim:
> sub NomeDaSub {
>    my ($NomeDoPrimeiroParametro, ..., $NomeDoUltimoParametro)=@_;
> }
>    Está certo? Ou tem uma técnica "mais" correta?
A declaração esta correta mas como boa prática "geralmente" não se usa 
PascalCase || UpperCamelCase para os nomes das subs... geralmente são 
usadas palavras separadas por underline (mas isso não é regra).

sub nome_da_sub {
     my ($primeiro_param, $segundo_param, ... ) = @_;
     ...
}

nome_da_sub('Parâmetro 1', 'Parâmetro 2', ... );


Espero ter ajudado!

[]'s


-- 

*Daniel Vinciguerra*
Web Solutions Architect and Co-Owner at Bivee
http://github.com/dvinciguerra


More information about the SaoPaulo-pm mailing list