[SP-pm] Módulo
Thomas Britis
thomas em tcnet.com.br
Terça Março 6 08:38:31 PST 2007
Boa tarde Luis,
Obrigado pela resposta e pelo tempo despendido com isso.
Esta foi apenas uma questão hipotética e com certeza foi um tanto
quanto confusa minha colocação.
Na prática o que eu quero é automatizar algumas funções que, por vezes
tenho que utilizar. Isso inclui acessos à banco de dados ou protolos
específicos (as vezes utilizando módulos do cpan). Minha dúvida surgiu,
inicialmente, pela necessidade de tratar o retorno de alguma função do
módulo de forma diferente.
Exemplificando:
Em um determinado programa eu preciso fazer uma conexão com um banco de
dados e, em caso de falha, pouco me importa o porque. Apenas saber que a
conexão falhou já me basta. E isso eu consigo facilmente utilizando
valores de retorno da função de conexão ao banco.
Porém, em uma segunda hipótese eu preciso tratar o erro que me é
retornado. E, sem quebrar a estrutura inicial (utilizando valores
numéricos de retorno), eu precisaria saber o erro. Então pensei em
utilizar a mesma estrutura do módulo, algo como:
sub connect {
my $self = shift;
if (!connect_to_db()) {
$self->{mensagem_de_erro} = 'Erro específico';
return 0;
}
return 1;
}
Com isso eu resolveria os dois problemas. Teria o retorno e a mensagem
de erro, caso esta fosse necessária.
Lembre-se que esta é uma situação hipotética e simples. Mas, se eu
conseguir entender qual a melhor maneira de se fazer isso, terei
resolvido diversos outros problemas estruturais e poderei começar a
desenvolver meus módulos tranquilamente.
Na prática a dúvida é: se eu receber a hash como argumento da função e
alterá-la, essa alteração terá validade apenas dentro dessa função ou
dentro da função que a chamou também?
Ou ainda:
sub connect {
my $self = shift;
if (!connect_to_db()) {
$self->{mensagem_de_erro} = 'Erro';
return 0;
}
return 1;
}
Teria o mesmo efeito que:
sub connect {
my $self = shift;
if (!connect_to_db()) {
$self->{mensagem_de_erro} = 'Erro';
}
return $self;
}
?????
Espero ter sido um pouco mais claro agora.
E, novamente, obrigado pelo tempo perdido com a resposta.
Luis Motta Campos wrote:
--
Thomas Storino Britis
TCNet Informatica e Telecomunicacoes LTDA
Mais detalhes sobre a lista de discussão SaoPaulo-pm