my $x = 10;
first(); ##get 10 here
sub first{
my $x =11;
second();
}
sub second{
print $x;
}
显然用my没有能够动态的获得一个值,在这里把my 改成local就可以得到11
my和local的重要区别在于my建立真正的新的私有变量
而local的机制是先将原来的全局变量保存,在代码结束的地方在回复到原来值
一般来说用my总是好于用local
但local的一个重要作用是局部化perl的内建变量如@ARGV,$/等

没有评论:
发表评论