索引哈希的参考

时间:2016-06-03 13:30:30

标签: perl

我有这样的哈希:

%output[$n]{"$names"}

其中n - 数字= [0,1..n](表示记录)       $ names - 哈希键{“key”,“moi”,“hy”,..}(表示列的名称)

如何: 1)计算有多少记录шт哈希 2)为每条记录获取字段名称 3)获取周期中每条记录的每个元素的值?

2 个答案:

答案 0 :(得分:2)

当你有一个数组时,你已经设置了一个哈希。您还必须意识到Perl哈希无序,因此如果您需要以特定顺序显示字段,那么您需要一个不同的策略

然而,回答你的问题

记录数

my $nrec = keys %output;

你可以像这样迭代哈希。对于每条记录,@names设置为字段的名称,而@values设置为其对应的值

for my $n ( sort { $a <=> $b } keys %output ) {
    my $rec = $output{$n};
    my @names = keys %$rec;
    my @values = values %$rec;
}

答案 1 :(得分:2)

%output[$n]{"$names"}

毫无意义。最有意义的是

$output[$n]{"$names"}

您可能也在使用

$output->[$n]{"$names"}

在这两种情况下你都没有哈希。

在第一种情况下,您有一个引用(@output)数组($output[$i])到哈希值(%{ $output[$i] })。

要查找数组中的元素数,请在标量上下文中对其进行评估。例如,

my $size = @output;

say 0+@output;

在第一种情况下,您对引用($output)到哈希(@$output)的数组($output->[$i])有一个引用(%{ $output->[$i] })。

要查找数组中的元素数,请在标量上下文中对其进行评估。例如,

my $size = @$output;

say 0+@$output;