我看到他们在这个脚本中使用我试图调试和文学只是不清楚。有人能为我解释这个吗?
解决方法
动态作用域。这是一个整洁的概念。很多人不使用它,或者理解它。
基本上认为我创建和锚定一个变量到一个{},A.K.A.范围。
- my $foo if (true); # $foo lives and dies within the if statement.
所以我的变量是你习惯了。而使用动态范围$ var可以在任何地方声明并在任何地方使用。
所以使用本地,你基本上暂停使用该全局变量,并使用“本地值”来处理它。所以local创建一个临时变量的临时作用域。
- $var = 4;
- print $var,"\n";
- &hello;
- print $var,"\n";
- # subroutines
- sub hello {
- local $var = 10;
- print $var,"\n";
- &gogo; # calling subroutine gogo
- print $var,"\n";
- }
- sub gogo {
- $var ++;
- }
这应该打印:
- 4
- 10
- 11
- 4