<div dir="ltr">Wendel, valeu :-) é isso mesmo, comi bola: o foreach espera um array, logo o &lt;$arquivo&gt; tá num contexto de array o que retorna todas as linhas.<br><br>Samir, sim, use um while que vai ser melhor :-)<br>
<br>Exatamente como o shonorio colou no primeiro email dele neste thread:<br>&lt;code&gt;<br><div style="margin-left: 40px;">open my $cmd_ls q[ls -lhR /pnfs/ |]<br>
while (my $linha = &lt;$cmd_ls&gt; ) {<br>&nbsp; ...<br>}<br></div>&lt;/code&gt;<br><br>;-)<br><br>[]s<br>Russo<br><br><br><div class="gmail_quote">2008/9/16 Samir Cury <span dir="ltr">&lt;<a href="mailto:rimasy@gmail.com">rimasy@gmail.com</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;"><div dir="ltr">Então eu usar um array não muda muito se eu for usá-lo num foreach?<br><br>já usando o while a coisa começa a ser favorável ao método do Solli?<br>
<br><div class="gmail_quote">2008/9/16 Wendel Scardua <span dir="ltr">&lt;<a href="mailto:wendelscardua@gmail.com" target="_blank">wendelscardua@gmail.com</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;"><div><div></div><div class="Wj3C7c"><div dir="ltr"><br><br><div class="gmail_quote">2008/9/16 Alexei Znamensky <span dir="ltr">&lt;<a href="mailto:russoz@gmail.com" target="_blank">russoz@gmail.com</a>&gt;</span><div>

<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div dir="ltr"><br><br><div class="gmail_quote">2008/9/16 Samir Cury <span dir="ltr">&lt;<a href="mailto:rimasy@gmail.com" target="_blank">rimasy@gmail.com</a>&gt;</span><div><br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">



<div dir="ltr">Então pessoal,<br><br>Hoje tentei por em prática a dica do Solli, mas esbarrei em algumas coisas, a explicação resumão foi bem esclarescedora, mas me confirmem uma coisa:<br><br>quando eu dou por exemplo (nem sei se é possível, mas pelo visto sim)<br>




<br>foreach $i(&lt;$cmd_ls&gt;) { code; }<br><br>Eu não estaria ocupando memória tanto quanto usando um array porque eu estou lendo de um arquivo temporário que seria o STDOUT do comando ??</div></blockquote></div><div><br>


Não porque debaixo dos panos o perl tá fazendo um fork, abrindo um processo novo, e delegando a comunicação entre processos para o sistema operacional - do mesmo jeito que funciona quando se usa um pipe na linha de comando. O pipe NÃO joga todo o stdout para a memória, ele vai lendo aos poucos em buffers dentro do kernel (naquele esquema producer/consumer, se você teve isso na faculdade ;-)<br>


&nbsp;
</div></div></div></blockquote></div><div><br>O pipe normalmente faz isso; então um loop while(&lt;$cmd_ls&gt;) { code; } vai consumir aos poucos a saída. <br><br>Mas ele fez um foreach, não um while. Como o for itera sobre uma lista, &lt;$cmd_ls&gt; vai devolver a lista de todas as linhas lidas, ocupando memória. <br>


</div></div><br>[]s<br>Wendel<br></div>
<br></div></div><div class="Ih2E3d">_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org" target="_blank">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></div></blockquote></div><br></div>
<br>_______________________________________________<br>
Rio-pm mailing list<br>
<a href="mailto:Rio-pm@pm.org">Rio-pm@pm.org</a><br>
<a href="http://mail.pm.org/mailman/listinfo/rio-pm" target="_blank">http://mail.pm.org/mailman/listinfo/rio-pm</a><br></blockquote></div><br><br clear="all"><br>-- <br>Alexei Znamensky [russoz_gmail_com] [<a href="http://russoz.wordpress.com">russoz.wordpress.com</a>] [<a href="http://www.flickr.com/photos/alexeiz">www.flickr.com/photos/alexeiz</a>]<br>
&quot;Though we live in trying times, we&#39;re the ones who have to try&quot;<br>
</div>