[Cascavel-pm] Readdir com foreach/while

Ednardo Lobo ednardo em lobo.eti.br
Quarta Abril 11 07:43:46 PDT 2012


Enfim, usar "foreach" para percorrer listas de tamanho variável e 
indeterminável poderá ser uma grande estupidez além de resultar num 
desastre.

foreach my $f (grep /^[^\.]/.readdir DH) {
...
}

Já usando "while" mantemos o consumo restrito ao tamanho individual de 
cada elemento da lista, não importando quantos sejam.

while (my $f = readdir DH) {
    next if $f =~ /^\./;
}

Mas será que internamente, quando ambos os códigos são executados pelo 
Perl, ele não realiza alguma otimização tornando tudo irrelevante?

Em 11-04-2012 10:32, Stanislaw Pusep escreveu:
> foreach my $f (readdir DH) { ... }
>
> seria aproximadamente equivalente a
>
> my @f = readdir DH;
> foreach my $f (@f) { ... }
>
> Ou seja, todos os resultados são pré-carregados e depois enumerados.
> Mais lento não fica, mas definitivamente consome mais memória.
>
> ABS()

-- 
     Ednardo Lobo

     www.lobo.eti.br


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