[Rio-pm] Hashes que referenciam (arrays variáveis?)

Alexei Znamensky russoz em gmail.com
Terça Setembro 16 13:17:26 PDT 2008


Wendel, valeu :-) é isso mesmo, comi bola: o foreach espera um array, logo o
<$arquivo> tá num contexto de array o que retorna todas as linhas.

Samir, sim, use um while que vai ser melhor :-)

Exatamente como o shonorio colou no primeiro email dele neste thread:
<code>
open my $cmd_ls q[ls -lhR /pnfs/ |]
while (my $linha = <$cmd_ls> ) {
  ...
}
</code>

;-)

[]s
Russo


2008/9/16 Samir Cury <rimasy em gmail.com>

> Então eu usar um array não muda muito se eu for usá-lo num foreach?
>
> já usando o while a coisa começa a ser favorável ao método do Solli?
>
> 2008/9/16 Wendel Scardua <wendelscardua em gmail.com>
>
>>
>>
>> 2008/9/16 Alexei Znamensky <russoz em gmail.com>
>>
>>>
>>>
>>> 2008/9/16 Samir Cury <rimasy em gmail.com>
>>>
>>>> Então pessoal,
>>>>
>>>> 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:
>>>>
>>>> quando eu dou por exemplo (nem sei se é possível, mas pelo visto sim)
>>>>
>>>> foreach $i(<$cmd_ls>) { code; }
>>>>
>>>> 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 ??
>>>>
>>>
>>> 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 ;-)
>>>
>>>
>>
>> O pipe normalmente faz isso; então um loop while(<$cmd_ls>) { code; } vai
>> consumir aos poucos a saída.
>>
>> Mas ele fez um foreach, não um while. Como o for itera sobre uma lista,
>> <$cmd_ls> vai devolver a lista de todas as linhas lidas, ocupando memória.
>>
>> []s
>> Wendel
>>
>> _______________________________________________
>> Rio-pm mailing list
>> Rio-pm em pm.org
>> http://mail.pm.org/mailman/listinfo/rio-pm
>>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>



-- 
Alexei Znamensky [russoz_gmail_com] [russoz.wordpress.com] [
www.flickr.com/photos/alexeiz]
"Though we live in trying times, we're the ones who have to try"
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/rio-pm/attachments/20080916/18117d23/attachment.html>


Mais detalhes sobre a lista de discussão Rio-pm