变量名中的perl变量替换
发布时间:2020-12-15 23:23:55 所属栏目:大数据 来源:网络整理
导读:#!/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/perl my $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: a c 正如其他人所指出的,虽然有一个很好的解释,为什么你要做的事情不起作用,你正在做的事情可能是错误的方法.你几乎不应该使用这种方法,除非没有更好的方法;没有你的问题,不清楚更好的方法是什么,但最有可能是像TLP的回答所说的哈希. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |