[SP-pm] Sinal de metodo nao existente
Luis Motta Campos
luismottacampos em yahoo.co.uk
Sexta Abril 25 10:56:16 PDT 2008
Lucas Mateus wrote:
> BEGIN é o único bloco executado antes do Parse do codigo. Tks pela
> disposição.
>
Nisso, você está certo:
champs em rugzak:~$ perl -e 'BEGIN{ exit 15; } this is a syntax error;'
champs em rugzak:~$ echo $?
15
Agora, o que você está querendo fazer é alterar a sintaxe do Perl de
alguma forma para que ele consiga fazer parse do método que não existe...
Você pode sempre definir a sub:
BEGIN{
package Net::FTP;
sub abcd;
}
Outra solução é tentar sobrecarregar o AUTOLOAD correspondente. Como
Net::FTP não tem AUTOLOAD, você pode definir um você mesmo:
BEGIN{
package Net::FTP;
sub AUTOLOAD {
# ...
}
# É preciso sobrecarregar __PACKAGE__::can(), também:
sub can {
if( $I_can_handle ){
return $method;
}else{
return SUPER::can();
}
}
}
Assim, você consegue fazer o que você está querendo.
Lembre-se de que a chamada de método não dá erro de sintaxe, ela vai ser
resolvida apenas quando o Perl estiver para executar aquele código.
Espero que isso te dê idéias...
Putamplexos!
--
Luis Motta Campos (a.k.a. Monsieur Champs) is a software engineer,
Perl fanatic evangelist, and amateur {cook, photographer}
Mais detalhes sobre a lista de discussão SaoPaulo-pm