[Moscow.pm] Почему код так работает?
Vladimir V. Perepelitsa
inthrax на gmail.com
Пт Май 30 09:24:25 PDT 2008
Что самое интересное, что если пропустить код через -MO=Deparse и потом в
таком виде выполнить, то все ок.
On Friday 30 May 2008 20:16:14 Denis Evdokimov wrote:
> #! /usr/bin/perl
> use strict;
> use warnings;
>
> my $test = 0;
> warn 'main: ', \$test, ' ', $test;
>
> my $func1 = sub {
> $test .= 1;
> warn 'func1: ', \$test, ' ', $test;
> sub func2 {
> $test .= 2;
> warn 'func2: ', \$test, ' ', $test;
> }
> };
>
> $func1->();
> func2();
> $func1->();
> func2();
> $func1->();
> func2();
> func2();
> func2();
> func2();
> warn $test;
>
> ##################
> main: SCALAR(0x182f478) 0 at 2.pl line 6.
> func1: SCALAR(0x182f478) 01 at 2.pl line 10.
> func2: SCALAR(0x18545b4) 2 at 2.pl line 13.
> func1: SCALAR(0x182f478) 011 at 2.pl line 10.
> func2: SCALAR(0x18545c0) 22 at 2.pl line 13.
> func1: SCALAR(0x182f478) 0111 at 2.pl line 10.
> func2: SCALAR(0x18545b4) 222 at 2.pl line 13.
> func2: SCALAR(0x18545c0) 2222 at 2.pl line 13.
> func2: SCALAR(0x18545b4) 22222 at 2.pl line 13.
> func2: SCALAR(0x18545c0) 222222 at 2.pl line 13.
> 0111 at 2.pl line 26.
>
>
> Что говорит нам о том, что $test в func2 никак не связана с $test во всей
> остальной программе
--
Vladimir Perepelitsa aka Mons Anderson
<inthrax на gmail.com> / #99779956
Подробная информация о списке рассылки Moscow-pm