我看到他们在这个脚本中使用我试图调试和文学只是不清楚。有人能为我解释这个吗?
解决方法
动态作用域。这是一个整洁的概念。很多人不使用它,或者理解它。
基本上认为我创建和锚定一个变量到一个{},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