Olá<br><br>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. <br>
<br>O programa carrega o modulo <a href="http://plugins.pm">plugins.pm</a> e le as funções de si proprio e coloca disponivel para o usuario escolher (algo como um shell). <br><br>Exemplo:<br><br>O usuario insere no arquivo uma funçao bar:<br>
<br>sub bar {<br> <br> print "meu sonho é fazer um esquema de plugins decente!\n";<br> <br>}<br><br><br>Eu carrego o codigo do usuario lendo do meu namespace e carrego num dp.<br><br><br> no strict 'refs';<br>
<br> my ($nspc) = caller();<br> <br> while (my ($name , $loss) = each %{ $nspc . '::'})<br> {<br> my $sym = $nspc . '::' . $name;<br> my $run = *{ $sym }{ 'CODE' };<br>
$map{$name} = $run;<br> } <br> <br>}<br><br>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}` . <br><br>
Isso me gera alguns efeitos colaterais, quando o usuario lista as funções aparecem os intrinsecos ::BEGIN, ::ISA ... <br><br>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.<br>
<br>Alguem tem algum hot shot no cpan?<br><br>[]'s<br><br>-- <br>____________________________<br>Frederico Recsky<br>Linux User: #253572<br><a href="http://www.fred.eti.br">http://www.fred.eti.br</a><br><a href="http://www.perl.org.br">http://www.perl.org.br</a>