- 论坛徽章:
- 6
|
$hash1 = {
'CSH' =>{
'3' => {
'px' => 20,
'dt' => '20161221'
},
'4' => {
'px' =>10,
'dt' => '20161221'
}
},
'OTH' =>{
'1' => {
'px' => 30,
'dt' => '20161221'
},
'2' => {
'px' => 40,
'dt' => '20171221'
}
},
'ABC' =>{
'2' => {
'px' => 10,
'dt' => '20191221'
},
'3' => {
'px' => 25,
'dt' => '20201221'
}
}
};
$hash2 = {
'OTH' =>{
'1' => {
'px' => 30,
'dt' => '20161221'
},
'2' => {
'px' => 40,
'dt' => '20171221'
}
},
'ABC' =>{
'2' => {
'px' => 10,
'dt' => '20191221'
},
'3' => {
'px' => 25,
'dt' => '20201221'
}
}
};
sub SortMyHash
{
my $A = $_[0];
my @List;
for $k1 (keys %$A)
{
$Key1 = ($k1 eq 'CSH') ? 0 : 1;
for $k2 (keys %{$A->{$k1}})
{
$Key2 = $k2;
$Key3 = $A->{$k1}->{$k2}->{dt};
$Value = sprintf 'px=%d, dt=%d', $A->{$k1}->{$k2}->{px}, $A->{$k1}->{$k2}->{dt};
push @List, "$Key3-$Key1-$Key2:$Value";
}
}
my @R = sort @List;
# local $,="\n"; print @R;# see the sorted array
return $R[0] =~ s/.+://r;
}
printf "%s\n", SortMyHash $hash1;
printf "%s\n", SortMyHash $hash2;
$> perl aaa.pl
px=20, dt=20161221
px=30, dt=20161221
|
|