我的应用程序的排序功能遇到问题。我需要lname
在instructors
. 遗留应用程序是用 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
. 让我知道是否有更简单的方法可以做到这一点。
提前致谢。