如何通过哈希名称对哈希数组进行排序?

时间:2017-02-23 20:14:45

标签: perl

我想通过哈希键对哈希数组进行排序,我怎么能在Perl中做到这一点? 结构创建如下:

push (@{$structure[$endpoint][1]}, \%temp_hash);
%temp_hashkey->value的简单哈希。 现在我想通过哈希键对该数组进行排序,每个哈希中只有一个key->值...已经和它一起战斗了2个小时而且我放弃了..

1 个答案:

答案 0 :(得分:1)

尝试

@sorted = sort {  (keys %$a)[0] cmp (keys %$b)[0] } @{$structure[$endpoint][1]};

根据每个哈希的第一个(唯一)键对数组的元素(它们是哈希引用)进行排序。如果键是数字键,请使用<=>

测试代码:

%a = ( 'a' => 1 );
%b = ( 'zz' => 2 );
%c = ( 'g' => 3);
@arr = (\%a, \%b, \%c);

print "Unsorted\n";
for (@arr)
{
    printf "%s\n",((keys %$_)[0]);
}

@sorted = sort { (keys %$a)[0] cmp (keys %$b)[0] } @arr;

print "\nSorted\n";
for (@sorted)
{
    printf "%s\n",((keys %$_)[0]);
}