perl中的本地和全局变量

前端之家收集整理的这篇文章主要介绍了perl中的本地和全局变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我对本地/我们在perl的范围几乎没有疑问.我读了很多文件,但仍然混乱.以下是混乱

>什么是本地范围?

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

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

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

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

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

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

解决方法

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

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

以下是创建变量的方法.

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

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

my does the same thing.

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

$x = 123;
sub foo { print "$x\n"; }
{ local $x = 456; foo(); }  # 456
foo();                      # 123
$x = 123;
sub foo { print "$x\n"; }
{ 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必须只包含全局符号.

猜你在找的Perl相关文章