[SP-pm] SaoPaulo-pm Digest, Vol 53, Issue 24

Fernando Oliveira fernandocorrea at gmail.com
Fri Feb 27 09:43:14 PST 2009


só não se esqueçam, q dependendo do q vcs queiram fazer, podem usar o open
tb...

2009/2/27 breno <breno em rio.pm.org>

> 2009/2/27 Raphael Carpi <raphael.carpi em gmail.com>:
> > boa tarde drs.
> >
>
> Boa tarde! Não sou doutor mas acho que o cumprimento foi pra mim também :-)
>
> > então senhores achei a lista enquanto estava pesquisando tutorial sobre
> perl
> >
> > estou aprendendo perl agora e estou em busca de alguns tutoriais, achei
> > vario na net e acho que a lista ajuda em algumas coisas
> >
>
> Cuidado com exemplos errados ou jurássicos (e consequentemente errados
> tb)! Use a lista quando tiver dúvidas, e tenha certeza que o material
> lido refere-se ao Perl 5 (de preferência 5.8 ou 5.10, para ser mais
> exato). Pra começar, experimente esse:
>
> http://www.perl.org.br/Perldoc/V500807/Perlintro
>
> Ah, e vc já conhece o CPAN, certo? 90% de todos os seus programas já
> estão prontos! :-)
>
> http://search.cpan.org
>
>
> > a duvida que tenho agora é a seguinte
> >
> > qual o meio mais rapido de executar o comando num script perl
> >
> > syste("comando");
> >
>
> vc quis dizer system(), eu sei. Typos acontecem :-)
>
> > exec("comando");
> >
> > `comando`;
> >
> > sei que as tres formas funcionam mas qual seria a mais rapido ou a mais
> > recomendada.
> >
>
> Que tal "nenhuma"? Perl é uma linguagem de programação. Se seu
> problema resume-se simplesmente a "executar programas externos de
> forma rápida", shell scripting (em ambiente *nix) e batch files (em
> ambiente win*) são mais apropriados, emho :-)
>
> Agora, se o buraco é mais embaixo e vc precisa fazer o parsing da
> saída ou controle externo de programas, Perl será provavelmente sua
> melhor amiga. Não se preocupe com velocidade - Perl é bastante rápido
> - preocupe-se com qual das opções melhor atende o seu problema.
> Garanto que o gargalo da aplicação (se houver) será no parsing em si,
> e não nos microsegundos que vc ganhou/perdeu chamando exec() ou
> system() - "desenvolva agora, otimize depois", já diz o ditado. E o
> módulo Devel::NYTProf pode te ajudar muito nisso, uma vez que seu
> programa estiver completo.
>
> Sobre as diferentes abordagens de system, etc, cada uma das opções
> listadas tem suas particularidades e propósitos específicos, não
> havendo uma "melhor que a outra" (depende do seu problema!). Para mais
> informações sobre elas, digite:
>
> perldoc -f system
> perldoc -f exec
>
> Uma dica que posso te dar sobre boas práticas na execução de programas
> externos é: Se vc realmente tem q fazer, coloque o programa e seus
> parâmetros numa lista. Isto é:
>
> em vez de:
>
> system("meuprog --arg1 --arg2");
>
> faça:
>
> system( "meuprog", "--arg1", "--arg2");
>
> ou, mais especificamente:
>
> my @cmd = ('meuprog', '--arg1', '--arg2');
> system (@cmd);
>
> O motivo é que, dessa forma, o Perl garante que o primeiro elemento da
> lista é o programa a ser chamado e que os demais elementos serão
> passados como parâmetros para ele. Isso elimina um monte de problemas
> de segurança associados à execução de programas com nome/parâmetros
> passados pelo usuário, especialmente em relação à interpolação de
> metacaracteres shell.
>
> Apenas por diversão, fiz o seguinte benchmark:
>
> ----------------------------8<----------------------------
> use Benchmark qw(:all);
>
> cmpthese(100000, {
>        'exec'   => sub { exec 'bla'   },
>        'system' => sub { system 'bla' },
>        'qx'     => sub { qx{bla}      },
>        'plique' => sub { `bla`        },
> });
> ----------------------------8<----------------------------
>
> obtendo os resultados:
>
>          Rate system plique     qx   exec
> system  1950/s     --   -12%   -12%   -96%
> plique  2216/s    14%     --    -0%   -96%
> qx      2225/s    14%     0%     --   -96%
> exec   50000/s  2464%  2156%  2147%     --
>
>
> É isso. Qualquer dúvida, como o champs falou, lembre-se de usar e
> abusar da lista!
>
> []s
>
> -b
> _______________________________________________
> SaoPaulo-pm mailing list
> SaoPaulo-pm em pm.org
> http://mail.pm.org/mailman/listinfo/saopaulo-pm
>



-- 
Just another Perl Hacker,
Fernando (SmokeMachine)
http://perl-e.org
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20090227/d4d38638/attachment.html>


More information about the SaoPaulo-pm mailing list