[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