[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