私のアプリケーションのソート機能に問題があります。 lname
キーのハッシュのハッシュをinstructors
の下でソートする必要があります。従来の アプリケーションはPerlで書かれています。このカスタムハッシュの値をperlのハッシュでソートする方法
ここでは、並べ替える必要があるハッシュのダンプです。上記構成において
$VAR1 = {
'instructors' => [
{
'is_placeholder' => 0,
'lname' => 'Lordy',
'name' => 'Daniel Lordy'
},
{
'is_placeholder' => 0,
'lname' => 'Fisher',
'name' => 'Bethy Fisher'
},
{
'is_placeholder' => 0,
'lname' => 'Jaya',
'name' => 'Jennifer Jaya'
},
],
'id' => '1237058',
'XXX' => {
'name' => 'Fall 2015 MFT Master 695',
},
'YYY' => '45'
};
インストラクターキーも空にすることができます。例については :私のアプリケーションで
$VAR1 = {
'instructors' => [],
'id' => '1237058',
'XXX' => {
'name' => 'Fall 2015 MFT Master 695',
},
'YYY' => '45'
};
、ユーザーが講師名に基づいて列をソートするオプションがあります。したがって、ユーザーが昇順で並べ替えると、開始時にインストラクターが空の行が表示され、その後、昇順でソートされたインストラクター名が各行にある残りの行が表示されます。その逆も同様です。
これまで私が試したコードです。
if($sort_order eq 'ASC') {
foreach my $elem (@$course_sections) {
my @sorted = map { $_->[1] }
sort { $a->[0] cmp $b->[0] }
map { [$_->{'lname'}, $_] } @{$elem->{'instructors'}};
}
if($sort_order eq 'DESC') {
foreach my $elem (@$course_sections) {
my @sorted = map { $_->[1] }
sort { $b->[0] cmp $a->[0] }
map { [$_->{'lname'}, $_] } @{$elem->{'instructors'}};
}
どのように私はこの@sorted
ハッシュが@$course_sections
内の行の順序に影響を与え得るのです。簡単な方法があれば教えてください。
ありがとうございました。
不足している '' 'と'、 'を修正しました。次回から手作業でデータ構造を構築するときには、より注意が必要です。 '$ VAR1'は' @ $ course_sections'の要素の1つですか? – simbabque
'@ sorted'は配列であり、ハッシュではありません。 '$ course_sections'の各要素は一行ですか? [編集]し、期待される出力を表示してください。 – simbabque
全体的なデータ構造を変更できますか?私。 「講師」を適切に並べ替えることはできますか? – simbabque