我有这样的哈希:
%output[$n]{"$names"}
其中n - 数字= [0,1..n](表示记录) $ names - 哈希键{“key”,“moi”,“hy”,..}(表示列的名称)
如何: 1)计算有多少记录шт哈希 2)为每条记录获取字段名称 3)获取周期中每条记录的每个元素的值?
答案 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;