变量名中的perl变量替换

变量名中的perl变量替换,第1张

概述#!/usr/bin/perlmy $var_a;$sub_a = "a";$var_a = "a";print ${var_."$sub_a"},"\n";$sub_b = "b";$var_b = "b";print ${var_."$sub_b"},"\n";__DATA__b 为什么要打印b,但不是?这对我来说似乎是非常意外的行为. 我正在尝试使用带有替换名称的变
#!/usr/bin/perlmy $var_a;$sub_a = "a";$var_a = "a";print ${var_."$sub_a"},"\n";$sub_b = "b";$var_b = "b";print ${var_."$sub_b"},"\n";__DATA__b

为什么要打印b,但不是?这对我来说似乎是非常意外的行为.

我正在尝试使用带有替换名称的变量.在实践中,我不能只是不声明变量,因为赋值是在forloop中完成的,因此具有不同的词法范围.

解决方法 请注意,这与您使用变量包含其他变量名称的事实无关.

这不起作用的原因是因为${“var_a”}构造实际上是指包级变量$main :: var_a.

由于$var_a被声明为词法变量,因此它是一个不同的标识符,因此${“var_a”}是undef.

如果将$var_a更改为$var_a,则可以看到

our $var_a="a";my $var_b="b";$var_c="c";print ${"var_a"},"\n";print ${"var_b"},"\n";print ${"var_c"},"\n";######## RESulTS:ac

正如其他人所指出的,虽然有一个很好的解释,为什么你要做的事情不起作用,你正在做的事情可能是错误的方法.你几乎不应该使用这种方法,除非没有更好的方法;没有你的问题,不清楚更好的方法是什么,但最有可能是像TLP的回答所说的哈希.

总结

以上是内存溢出为你收集整理的变量名中的perl变量替换全部内容,希望文章能够帮你解决变量名中的perl变量替换所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1265801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存