perl中的本地和全局变量
我对本地/我们在perl的范围几乎没有疑问.我读了很多文件,但仍然混乱.以下是混乱
>什么是本地范围? 我读的是 – >本地复制全局变量的值,更改值,用户将使用它和外部块将保留全局值 混乱 – >我做同样的事情只有受益我看到,一些变量,如$package :: var不能用我的范围声明,但可以使用本地范围声明.当地还有什么 什么是 – >其范围在包装内.基本上我们将全局变量放在@EXPORT数组中,并使用它或附加命名空间来在其他包中使用. 怀疑 – >再次,如果我们使用我的范围声明变量,那么我们可以访问整个包中的变量.是对的吗?是否可以在@EXPORT数组中添加我的作用域变量,并在另一个包中使用它? 我认为全局变量用我们的关键字声明.有没有其他的方法呢? 这个问题可能看起来像重复,但我很困惑 解决方法
在范围界定方面,Perl中有两种变量.
词汇变量是词法范围的,这意味着它们只能在当前的词汇范围内可见. 以下是创建变量的方法. >我创建一个词汇变量. 本地不创建任何变量.它只是备份一个变量,直到当前的词法范围被破坏.
不,本地不改变变量的范围.虽然词法变量仅在词法范围内可见,但整个翻译器仍然可以看到本地化的全局变量. $x = 123; sub foo { print "$xn"; } { local $x = 456; foo(); } # 456 foo(); # 123 $x = 123; sub foo { print "$xn"; } { my $x = 456; foo(); } # 123 foo(); # 123
本地主要用于近似我的变量的功能,无法以其他方式声明词法. (从历史上看,这是所有的变量,自5.6以来,只有标点符号变量不能被声明为词法.
可以在全球范围内看到的变量,即解释器中的任何代码.
出口商使用的是@EXPORT.出口商将无法找到除全局符号之外的任何东西(因为文件是以新的词汇作用域编译的),所以@EXPORT必须只包含全局符号. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |