这个问题在这里已经有了答案:
How can I use a variable as a variable name in Perl?
(3 个回答)
5年前关闭。
基本上,我想获取在动态生成的字符串中命名的变量的内容,但是在严格模式下完成此操作的所有努力都失败了。有几篇关于类似问题的帖子,但似乎没有一个对我有用的解决方案。
这就是我想要做的:
# Fields:
$q1 = "ex. data 1";
$q2 = "ex. data 2";
$q3 = "ex. data 3";
$q4 = "ex. data 4";
$q5 = "ex. data 5";
# retrieve the desired field name. q1, q2, q3, q4, or q5.
$field_name = fetch_the_desired_field_name();
# fetch the contents of the named field. ex. data 1, ex. data 2, etc.
$contents_of_desired_field = $$field_name;
print $contents_of_desired_field;
有没有办法在严格模式下做到这一点?在关于类似问题的其他帖子中,人们说散列是答案,但我似乎不太明白如何用散列来做到这一点。
不用说,这是一个非常简化的例子。在实际代码中,有 115 个可能的字段名称,全部从数据库中提取,内容不可预测。
最佳答案
要使用哈希执行此操作:
店铺:
$myHash{q3} = "ex. data 3";
取回:
$result = $myHash{q3};
这有多种好处,例如:
keys %myHash
遍历所有字段名称。 map
, grep
)等...@subset = @myHash{ grep m/q[1-5]/ keys %myHash }; # Use a slice @{} operator.
$hash_ref = $sth->fetchrow_hashref;
关于perl - 在 Perl 的严格模式下使用动态生成的变量名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17434333/