加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

perl – 这个数据结构如何工作?

发布时间:2020-12-16 06:21:06 所属栏目:大数据 来源:网络整理
导读:我必须对现有脚本进行一些调试,而不需要了解有关perl的大量知识. 此脚本使用这些数据类型来存储文件中的所有字段: ${$LineRefs-{FIELD_NAME}} 我一直试图弄清楚如何通过迭代这个标量/散列/数组或者它可能是什么来分别找到所有可能的字段,但我不知道如何. 有
我必须对现有脚本进行一些调试,而不需要了解有关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

你正在处理一个哈希,它就像一个数组但是由字符串(键)而不是整数(索引)索引

您可以使用keys,valueseach迭代哈希

您可以像这样打印所有键及其值.由于您的变量$LineRefs是哈希引用,因此您需要将其取消引用为%$LineRefs

for my $key ( keys %$LineRefs ) {
    my $value = $LineRefs->{$key};
    print "$key => $valuen";
}

如果您的哈希值确实是对标量的引用,那么您将看到为值创建的SCALAR(0x640448)之类的内容

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读