[Moscow.pm] Почему код так работает?
Игорь Гердлер
igor на gerdler.ru
Пт Май 30 07:50:28 PDT 2008
Уважаемые коллеги!
При обсуждении темы с объявлением именованных функций внутри других
написал пример:
use strict;
use warnings;
my $test = 10;
warn 'main: ', \$test;
my $func1 = sub {
warn 'func1: ', \$test;
sub func2 {
warn 'func2: ', \$test;
}
};
$func1->();
func2();
func2();
func2();
func2();
func2();
func2();
Код выдает результат, который я не могу объяснить
main: SCALAR(0x804eb30) at ../../test.pl line 5.
func1: SCALAR(0x804eb30) at ../../test.pl line 8.
func2: SCALAR(0x809c0d4) at ../../test.pl line 10.
func2: SCALAR(0x809c0e0) at ../../test.pl line 10.
func2: SCALAR(0x809c0d4) at ../../test.pl line 10.
func2: SCALAR(0x809c0e0) at ../../test.pl line 10.
func2: SCALAR(0x809c0d4) at ../../test.pl line 10.
func2: SCALAR(0x809c0e0) at ../../test.pl line 10.
Может кто-нибудь объяснить, почему код так работает?
Игорь Гердлер (ginnie)
Подробная информация о списке рассылки Moscow-pm