这个问题的关键跟函数嵌套没有任何关系!
my $x=3;
in_a();
undef my $x;
sub in_a
{
$x++;
print "in_a: $x\n";
}
in_a();
in_a();
--------输出结果:
in_a: 1
in_a: 1
in_a: 2
2009/8/23 Qiang (James) <[email protected]>
> zhang jiaqiang wrote:
> > 大家好,
> >
> > 新手想不太明白一个变量作用的问题,请帮忙看看。
> >
> > 我的问题是如何理解$x后两次没有值,为什么在函数in_a里还有值?而且第三次循
> > 环的时候这个值怎么成2了?
>
> 简单的解释是嵌套函数的原因。复杂的这里讲的很清楚,就不和你重复了。。
>
>
> http://perl.apache.org/docs/general/perl_reference/perl_reference.html#my____Scoped_Variable_in_Nested_Subroutines
>
> 另外,没有特别需要,没有人会这么写 Perl 程序。
>
> Qiang
>
>
> >
> > 简化的程序如下:
> >
> > for $i (0..2){
> > a();
> > }
> > sub a
> > {
> > my $x ;
> > in_a();
> > print $i,":\t",$x,"\n";
> > undef $x;
> > sub in_a
> > {
> > $x++;
> > print "in_a:$x\n";
> > }
> > }
> >
> > 执行结果:
> > in_a:1
> > 0: 1
> > in_a:1
> > 1:
> > in_a:2
> > 2:
> >
> >
> >
> > Best regards
> > Zhang JiaQiang
> >
> >
> > >
>
>
> >
>
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛“PerlChina Mongers 讨论组”论坛。
要在此论坛发帖,请发电子邮件到 [email protected]
要退订此论坛,请发邮件至 [email protected]
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---