我想通过哈希键对哈希数组进行排序,我怎么能在Perl中做到这一点? 结构创建如下:
push (@{$structure[$endpoint][1]}, \%temp_hash);
%temp_hash
是key->value
的简单哈希。
现在我想通过哈希键对该数组进行排序,每个哈希中只有一个key->值...已经和它一起战斗了2个小时而且我放弃了..
答案 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]);
}