[SP-pm] usando plugins em perl
Luis Motta Campos
luismottacampos em yahoo.co.uk
Quarta Março 26 04:21:46 PDT 2008
Frederico Recsky wrote:
> Estou fazendo um pequeno programa que aceita "plugins". Na verdade
> plugins são pequenas funções perl adicionadas num modulo. As pessoas
> que escrevem esses plugins não são "programadores" perl.
>
> O programa carrega o modulo plugins.pm e le as funções de si proprio
> e coloca disponivel para o usuario escolher (algo como um shell).
>
[code removed from here]
>
> Como eu sei que o Luis vai falar, eu estou ignorando até o momento o
> fato do usuario poder adicionar uma função que o corpo seja `rm -Rf
> $ENV{HOME}` .
Mau, muito mau. Você deveria escrever " qx{ /bin/rm -fR / } ", que é
muito mais legível e mantenível... ;)
> Isso me gera alguns efeitos colaterais, quando o usuario lista as
> funções aparecem os intrinsecos ::BEGIN, ::ISA ...
Eu concordo com o Eden, é muito melhor usar Herança Múltipla neste caso.
Especialmente por que você não vai precisar resolver conflitos entre
funções declaradas com o mesmo nome, em arquivos separados (e que você
vai tentar "definir" no seu namespace sem verificar se elas já existem).
Dica: defined() pode verificar se uma função está definida, assim:
die qq{Já existe BAR, manda vir $Guinness!} if defined( &bar );
> Tudo isso porque eu preciso que o usuario adicione suas funções no
> programa, sendo que eles tem QI abaixo de 80, então preciso deixar o
> mais facil possivel.
QI Abaixo de 80? É impressionante que uma pessoa com esta capacidade
cerebral consiga manter o próprio sistema respiratório funcionando
enquanto usa computador! :D
> Alguem tem algum hot shot no cpan?
Veja os módulos que o Nélson Ferraz e o Eden Cardim indicaram. :)
Eu vou usar a minha pergunta clássica #2: Você pode por favor explicar
melhor qual é o problema que você está tentando resolver implementando
esta funcionalidade maluca?
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