このハッシュをアルファベット順にソートしたいのですが、これは私のハッシュ構造です
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});
私はユーザーに同じ構造を返すしたい。
回答:
回答№1は2あなたは参照を外す必要があります $hash->{names}
アレイ、
use feature "fc";
my @sorted_data = sort{ fc($b->{names}) cmp fc($a->{names}) } @{$hash->{names}};
fc
2つの文字列が大文字と小文字の区別なし
定位置でソートしたい場合は、結果を元の配列に戻すだけです。
@{$hash->{names}} = sort{ fc($b->{names}) cmp fc($a->{names}) } @{$hash->{names}};