Legal!...Obrigado Thiago.

On 03-06-2011 07:34, Thiago wrote:
Pegando o exemplo do próprio intermediated Perl:

use File::Find;

my $callback;
{
  my $count = 0;
  $callback = sub { print ++$count, ": $File::Find::name\n" };
}
find($callback, ".");

Aqui, a variável $callback está no escopo de Main. Mas ela é usada dentro de um bloco para referenciar uma sub. Se $callback não criasse a referência para a sub a variável count desapareceria com o fechamento do bloco. Você não pode acessar $count diretamente mas toda vez que executar a sub em $callback $count será incrementada.
Para que serve? Eh muito util para criar dados privados em objetos.

mais sobre closures:
http://www.manning-source.com/books/conway/conway_ch11.pdf


On 03-06-2011 00:22, "Flávio R. Lopes" wrote:
Pessoal, desculpe aí, mas acho que achei a resposta nas Threads de 2007 da lista. Foi inclusive uma thread do Solli.
Mas se alguém quiser dar algum exemplo, please feel free....

On 03-06-2011 00:12, "Flávio R. Lopes" wrote:
Boa noite pessoal!
Seguinte:
Estou vendo no meu livro, dentro da parte que trata de Subrotinas Anônimas, sobre Closures.
Não sei se entendi direito, em Perl, o significa disto.
Pelo que li, parece que é o acesso à uma variável, que está fora do escopo (por exemplo dentro de um bloco), por uma sub que está fora do escopo deste bloco de instruções, ou seja, a sub consegue recuperar o valor desta variável que está dentro de um bloco, ou seja, uma variável interna de um bloco que teoricamente não poderia ser acessada.

É isto mesmo?
Se não for, alguém poderia de explicar?

Abraço,
Flávio
=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer


=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer



=begin disclaimer
  Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
SaoPaulo-pm mailing list: [email protected]
L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
=end disclaimer

Responder a