如何在Perl中获取全局变量值?

赫曼特·巴尔加瓦(Hemant Bhargava)

试图了解范围解析操作符。

$a = 5;
foo();
print "Out a = $a\n";

sub foo() {
  local $a = 10;
  bar();
}

sub bar() {
  print "Inside a = $a\n";
  print "Global a = $::a\n";
}

该程序的输出为:

Inside a = 10
Global a = 10
Out a = 5
  1. 我本来期望“$ ::一”的价值出来为“5”,而不是10。我以为是什么范围解析运营商做。获取范围值。在这种情况下,没有给出范围,因此具有全局价值。如果有任何调整,请纠正我。

  2. 我应该写什么才能获得bar子例程内的'a'全局值?

口渴

你是误会::Perl实际上并没有全局变量(不包括某些特殊的标识符名称)。它具有包变量。也就是说,每个全局变量都属于一个包。如果你的代码有没有package说法,即包main,所以$a是一样的$main::a而之前有没有什么::是简写main,因此$::a$main::a

如果您确实有一个package声明,则在其范围内使用的包变量将包含在该包中,除非使用限定::

local为包变量,哈希或数组元素提供一个临时值,并保留最里面的作用域时要恢复的先前值。无法在本地范围内访问保存的值。

全局/包变量的相反是词法变量。你总是会希望使用词法变量(以申报my),不包变量。即使您确实使用了包变量,也几乎不会想要使用来更改它们的值local因此,一个良好的情况下使用local将是真正罕见。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何获取AJAX的全局变量值

如何在函数中保存全局变量值?

如何在Shiny Application的onStart参数中设置全局变量值

如何使用Javascript中的变量值使用onclick按钮函数更改全局变量的值

无法在 Kotlin 中更改全局变量值

除了声明它的函数之外,如何更改python中的全局变量值?

如何使用IRBuilder更新LLVM IR中的全局变量值?

更改全局变量值jQuery

如何在事件中获取JavaScript中的变量值?

如何在extensionContext中获取变量值

如何在Popen中获取Shell变量值

如何在php中获取脚本变量值

如何在 GATLING 中获取 javascript 变量值

如何在不更改全局变量的情况下更改分配给全局变量值的局部变量?

我如何在一个函数中设置全局变量值,然后在Codeigniter中通过另一个函数访问它?

如何从div中获取变量值

如何在 If 中设置变量值

如何将DTS全局变量值检索到SQL Server 2000中的存储过程

如何在商店突变中获取全局变量

如何在 TypeScript 中获取全局变量?

为什么我的包含函数无法获取全局变量值?

如何在CodeIgniter中全局设置动态变量值?

如何为发布和调试模式C#设置不同的全局变量值

如果全局变量值更改,如何强制渲染?

程序设计——更新全局变量值

替换全局变量值的更好方法

在函数内部更改全局变量值

过滤列表时设置 Flutter 全局变量值

全局变量值未超出ajax方法