[Rio-pm] Dúvida com o foreach

breno breno em rio.pm.org
Quinta Janeiro 10 02:40:10 PST 2008


Pq vc está pensando como C. Pense como VC! :-P

$cor não é um índice, é uma cor! Vc nomeou certo, mas usou errado :-)

"para cada cor em @cores, imprime... a própria cor!"
ou, em Perl:

foreach $cor (@cores) {
   print $cor . "\n";
}

isso deve fazer o que vc quer.

Ao pedir para o Perl imprimir $cores[$cor], vc está efetivamente
pedindo que ele imprima o item da lista @cores na posição "azul",
depois na posição "verde", depois na posição "amarelo", e depois na
posição "vermelho". Essas strings, ao serem tratadas em contexto
escalar,
estão sendo avaliadas como 0 e, consequentemente, retornando $cores[0]
a cada iteração do seu foreach().

Entendeu? Se quiser manter o sotaque de C, pode tentar algo como:

for ($i = 0; $i < @cores; $i++) {    # agora sim temos um índice!
    print $cores[$i] . "\n";
}

[]s

-b

On Jan 10, 2008 8:20 AM, Fabrício Firmino de Faria
<firminodefaria em gmail.com> wrote:
> Olá a todos, algué poderia me dizer pq o código:
>
> @cores = ("azul","verde","amarelo","vermelho");
>
> foreach $cor (@cores) {
>     print $cores[$cor],"\n";
> }
>
> imprime azul
>             azul
>             azul
>             azul
>
>
> VLW
>
>
>
>
>
> _______________________________________________
> Rio-pm mailing list
> Rio-pm em pm.org
> http://mail.pm.org/mailman/listinfo/rio-pm
>


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