我想按字母顺序对此哈希进行排序。这是我的哈希结构
my $hash = {
'names' => [
{
'state' => 'I',
'names' => 'INTTEST',
},
{
'state' => 'I',
'names' => 'TEST',
},
{
'state' => 'D',
'names' => 'GREATTEST',
},
{
'state' => 'I',
'names' => 'Stest',
},
{
'state' => 'I',
'names' => 'Atest',
},
{
'state' => 'D',
'names' => 'SPtest',
},
]
};
我试过的是
my @sorted_data = (sort { lc($b->{names}) cmp lc($a->{names});} $hash->{names});
我想将相同的结构返回给用户。
答案 0 :(得分:2)
您必须取消引用$hash->{names}
数组,
use feature 'fc';
my @sorted_data = sort{ fc($b->{names}) cmp fc($a->{names}) } @{$hash->{names}};
fc
检查两个字符串是否相等,无论大小写
如果要进行排序,只需将结果分配回原始数组,
@{$hash->{names}} = sort{ fc($b->{names}) cmp fc($a->{names}) } @{$hash->{names}};