加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl中的本地和全局变量

发布时间:2020-12-15 22:04:40 所属栏目:大数据 来源:网络整理
导读:我对本地/我们在perl的范围几乎没有疑问.我读了很多文件,但仍然混乱.以下是混乱 什么是本地范围? 我读的是 – 本地复制全局变量的值,更改值,用户将使用它和外部块将保留全局值 混乱 – 我做同样的事情只有受益我看到,一些变量,如$package :: var不能用我的
我对本地/我们在perl的范围几乎没有疑问.我读了很多文件,但仍然混乱.以下是混乱

>什么是本地范围?

我读的是 – >本地复制全局变量的值,更改值,用户将使用它和外部块将保留全局值

混乱 – >我做同样的事情只有受益我看到,一些变量,如$package :: var不能用我的范围声明,但可以使用本地范围声明.当地还有什么
什么是“全局”变量?

什么是 – >其范围在包装内.基本上我们将全局变量放在@EXPORT数组中,并使用它或附加命名空间来在其他包中使用.

怀疑 – >再次,如果我们使用我的范围声明变量,那么我们可以访问整个包中的变量.是对的吗?是否可以在@EXPORT数组中添加我的作用域变量,并在另一个包中使用它?

我认为全局变量用我们的关键字声明.有没有其他的方法呢?

这个问题可能看起来像重复,但我很困惑

解决方法

在范围界定方面,Perl中有两种变量.

词汇变量是词法范围的,这意味着它们只能在当前的词汇范围内可见.
>包变量是全局范围的,这意味着它们可以被解释器中的所有代码看到.

以下是创建变量的方法.

>我创建一个词汇变量.
>我们创建一个词典变量,该变量在当前包中的别名的变量中被别名.换句话说,我们的$foo;与alias my $foo = $The :: Current :: Package :: foo ;.
>全局变量在使用时创建.

本地不创建任何变量.它只是备份一个变量,直到当前的词法范围被破坏.

my does the same thing.

不,本地不改变变量的范围.虽然词法变量仅在词法范围内可见,但整个翻译器仍然可以看到本地化的全局变量.

$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

What else for local

本地主要用于近似我的变量的功能,无法以其他方式声明词法.

(从历史上看,这是所有的变量,自5.6以来,只有标点符号变量不能被声明为词法.

What is “global” variable?

可以在全球范围内看到的变量,即解释器中的任何代码.

Is it possible to add the my scoped variables in @EXPORT array and use it in another packages?

出口商使用的是@EXPORT.出口商将无法找到除全局符号之外的任何东西(因为文件是以新的词汇作用域编译的),所以@EXPORT必须只包含全局符号.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读