#!/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变量替换所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)