gpt4 book ai didi

perl - 这个数据结构是如何工作的?

转载 作者:行者123 更新时间:2023-12-05 00:57:03 26 4
gpt4 key购买 nike

我必须对现有脚本进行一些调试,而没有很多关于 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 , values , 或 each 迭代哈希

您可以像这样打印所有键及其值。由于您的变量 $LineRefs是一个散列引用,您需要将其取消引用为 %$LineRefs
for my $key ( keys %$LineRefs ) {
my $value = $LineRefs->{$key};
print "$key => $value\n";
}

如果您的哈希值确实是对标量的引用,那么您将看到类似 SCALAR(0x640448) 的内容。打印的值

关于perl - 这个数据结构是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35134357/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com