2008年1月8日星期二

Perl : my / our / local 变量作用域

来源:兰花仙子-关于变量作用域(原译)
  • 包变量
    • 假如没有其他申明,变量就是包变量;
    • 包变量总是全局的。
  • 词法变量
    • Perl里其他类型的变量叫做词法变量或私有变量,因为它们是私有的,必须使用my申明。
  • local
    • local实际不创建本地变量。
    • local $x实际做的事是:它存储包变量$x的当前值在一个安全的地方,然后用一个新值替换它,假如没有指定新值,就使用undef代替。当控制离开当前块时,它也会恢复$x的旧值。它影响的是包变量,这个包变量获取了本地值。但包变量总是全局的,local申明的包变量亦无例外。
  • our
    • 使用use vars '$x'申明时,可以在任何地方使用全局变量$x。
    • our $x的影响是词法作用域。our $x仅仅允许在程序的某些块里申明全局变量$x,假如意外的在其他地方使用它,仍会导致错误。
    • 参考:perl中our的用法

没有评论:

发表评论