[微]perl variable system

1.perl有两套变量系统。一由our声明,又叫全局/包/符号表变量.二是my变量,又叫私有/局部/词法变量。

2.perl4.0时,只有包变量。且没有our,没有use strict 'vars';

3.perl4.0时,程序员们终于受不了了(想像一下没有私有变量的日子),于是引入了一个轻量级的解决方案: local。

4.到目前为止,你只能local一个包变量,在所在块中,你可以尽情的操弄它,出了这个块,它还是原来的它。

5.local的效果是创建了一个dynamic scope,可能只有1%的情况会使用它。具体请见http://perl.plover.com/local.html

6.显然块+loca只能解决部分问题,程序员们一直在骂娘。

7.perl 5.0+, 局部变量系统终于被实现,但local已经被占,于是使用my,取其“私有”之意。

8.my变量的范围(可见性)可以通过看程序文本确定:包含其声明的最小块。因此被称作词法变量。

9. 两套变量系统导致的结果是: 光秃秃的全局变量声明时赋值很容易被误解为私有变量的某一次赋值。于是加入了use strict 'vars'语法检查。

10. use strict 'vars'强制包变量必须带着包的名字。

11. 负责实现PackageNameIsVeryLongAndPackageVariablesAreEveryWhere这个包的程序员开始骂娘。

12.于是引入了 no strict vars qw/$a $b/;

13. perl程序员依然在骂娘,原因是怪怪的perl连声明个变量都很怪,被嘲了。。。

14.perl5.6终于引入了our。

15.our变量被称为符号表变量,因为会出现在包的符号表中。而my变量不会。


 

你可能感兴趣的:(variable)