Learn Perl #our&my

Difference with our

@Link: http://stackoverflow.com/questions/845060/what-is-the-difference-between-my-and-our-in-perl

Available since Perl 5

my is a way to declare:

  • non-package variables, that are
    • private,
    • new,
    • non-global variables,
    • separate from any package. So that the variable cannot be accessed in the form of $package_name::variable.

On the other hand, our variables are:

  • package variables, and thus automatically
    • global variables,
    • definitely not private,
    • nor are they necessarily new; and they
    • can be accessed outside the package (or lexical scope) with the qualified namespace, as $package_name::variable.

Declaring a variable with our allows you to predeclare variables in order to use them under use strict without getting typo warnings or compile-time errors. Since Perl 5.6, it has replaced the obsolete use vars, which was only file-scoped, and not lexically scoped as is our.

For example, the formal, qualified name for variable $x inside package main is $main::x. Declaring our $x allows you to use the bare $x variable without penalty (i.e., without a resulting error), in the scope of the declaration, when the script uses use strict or use strict "vars". The scope might be one, or two, or more packages, or one small block.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容