[Moscow.pm] Почему код так работает?

Denis Evdokimov evdokimov.denis на gmail.com
Пт Май 30 09:16:14 PDT 2008


#! /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 во всей
остальной программе
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: http://mail.pm.org/pipermail/moscow-pm/attachments/20080530/c9991928/attachment-0001.html 


Подробная информация о списке рассылки Moscow-pm