[Moscow.pm] Почему код так работает?
Alexander Lourier
aml на rulezz.ru
Пт Май 30 12:01:05 PDT 2008
В сообщении от 30 мая 2008 18:50 Игорь Гердлер написал(a):
> При обсуждении темы с объявлением именованных функций внутри других
> написал пример:
Чудеса еще чудесатее. Несмотря на то, что \$test каждый раз другая, она
указывает на один и тот же скаляр (но не тот, который объявлен как my $test):
use strict;
use warnings;
my $test = 10;
warn 'main: ', \$test;
my $func1 = sub {
warn 'func1: ', \$test;
sub func2 {
warn 'func2: ', \$test, ++$test;
}
};
$func1->();
func2();
func2();
func2();
func2();
func2();
func2();
$ ./test.pl
main: SCALAR(0x814f6a8) at ./test.pl line 7.
func1: SCALAR(0x814f6a8) at ./test.pl line 11.
func2: SCALAR(0x818aa98)1 at ./test.pl line 13.
func2: SCALAR(0x818aaa4)2 at ./test.pl line 13.
func2: SCALAR(0x818aa98)3 at ./test.pl line 13.
func2: SCALAR(0x818aaa4)4 at ./test.pl line 13.
func2: SCALAR(0x818aa98)5 at ./test.pl line 13.
func2: SCALAR(0x818aaa4)6 at ./test.pl line 13.
> Moscow.pm mailing list
> moscow-pm на pm.org | http://moscow.pm.org
> http://mail.pm.org/mailman/listinfo/moscow-pm
--
Alexander Lourier, http://aml.rulezz.ru
Подробная информация о списке рассылки Moscow-pm