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