我知道Perl中的my是什么。它定义了一个变量,该变量仅存在于定义该变量的块的范围内。 our是做什么的?
ourmy有何不同?

最佳答案

好问题: our my 有什么区别,our有什么作用?

综上所述:

从Perl 5开始可用, my 是一种声明非程序包变量的方法,它们是:

  • 私有(private)
  • 非全局
  • 与任何程序包分开,因此无法以$package_name::variable的形式访问变量。


  • 另一方面, our 变量是程序包变量,因此会自动:
  • 全局变量
  • 绝对不是私有(private)
  • 不一定是新的
  • 可以使用以下命令在包(或词法范围)之外访问:
    限定 namespace ,如$package_name::variable


  • 使用声明变量our 允许您预先声明变量,以便在use strict下使用它们,而不会出现拼写错误或编译时错误。从Perl 5.6开始,它已替换了仅文件作用域的过时的use vars,而不是 our 的词法作用域。

    例如,$x中的package main变量的正式合格名称是$main::x。当脚本使用our $x$x时,声明 use strict 允许您在声明的范围内使用裸use strict "vars"变量而不会受到任何惩罚(即,没有导致的错误)。作用域可能是一个或两个或多个包,或者一个小块。

    关于perl - Perl中的 'my'和 'our'有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/845060/

    10-08 23:07