[Cascavel-pm] Criação de array dentro de um foreach.
Luis Champs de Carvalho
monsieur_champs em yahoo.com.br
Sexta Julho 16 11:57:23 CDT 2004
On Fri, 16 Jul 2004, Rod Za wrote:
> Olá,
>
> Estou com uma dúvida. Se eu crio um array dentro de um foreach usando
> `my`, toda vez que o loop passa pela declaração é criada uma nova
> variável ou a mesma é substituída?
>
Toda vez é criada uma nova variável.
Quando o loop termina, todas as variaveis declaradas com "my" dentro do
bloco do loop (isso inclui a variavel declarada como iterador do loop) são
destruídas.
> ex:
> __PERL__
> #!/usr/bin/perl
> use warnings;
> use strict;
> my @array1 =(1,2,3,4,5,6,7,8,9);
> foreach(@array1){
# Novo @array2 criado
> my @array2 = ($_,'a','b','c','d','e');
> print "$_ = @array2\n";
> } # @array2 destruido aqui.
> __END__
>
> Neste caso é criado um novo @array2 a cada foreache(@array1) ou é o
> mesmo array que a cada vez recebe um novo valor?
>
Toda iteração provoca a alocação de um novo @array2, que é destruido ao
final da execução do bloco do loop. Quando o bloco volta a ser executado
(possivelmente durante a próxima iteração) outra variável @array2 é
criada, conforme a solicitação do "my".
Espero que isso ajude.
[]'z!
--
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Luis Campos de Carvalho is BSc in Comp Science,
PerlMonk [SiteDocClan], Cascavel-pm Moderator,
Unix Sys Admin && Certified Oracle DBA
http://br.geocities.com/monsieur_champs/
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Mais detalhes sobre a lista de discussão Cascavel-pm