我必须对现有脚本进行一些调试,而不需要了解有关perl的大量知识.
此脚本使用这些数据类型来存储文件中的所有字段:
${$LineRefs->{FIELD_NAME}}
我一直试图弄清楚如何通过迭代这个标量/散列/数组或者它可能是什么来分别找到所有可能的字段,但我不知道如何.
有谁能请我指出正确的方向?
解决方法
这当然很奇怪
$LineRefs是对哈希的引用,该哈希具有一个带有键FIELD_NAME的元素,其值是对标量的引用
像这样
use v5.14; my $LineRefs = { FIELD_NAME => \99,}; print ${ $LineRefs->{FIELD_NAME} },"\n";
产量
99
对哈希和数组的引用很常见,因为它们允许大型数据结构由单个标量表示.但是对标量的引用远没有用,因为它们只是用另一个标量替换标量
对不起,谢谢@glennjackman我匆匆忙忙地读了这个问题,并假设这是为什么哈希元素被解除引用为标量
I’ve been trying to figure out how to find all possible fields separately by iterating over this scalar/hash/array or whatever it may be but I have no clue how
你正在处理一个哈希,它就像一个数组但是由字符串(键)而不是整数(索引)索引
您可以像这样打印所有键及其值.由于您的变量$LineRefs是哈希引用,因此您需要将其取消引用为%$LineRefs
for my $key ( keys %$LineRefs ) { my $value = $LineRefs->{$key}; print "$key => $value\n"; }