{
meas_1 => {
suffix_1 => { C1 => { value => 10.2 }, C2 => { value => 110.2 } },
suffix_2 => { C1 => { value => 4.7 }, C2 => { value => 204.7 } },
suffix_3 => { C1 => { value => 5.2 }, C2 => { value => 305.2 } },
suffix_4 => { C1 => { value => 11.8 }, C2 => { value => 411.8 } },
suffix_5 => { C1 => { value => 0.7 }, C2 => { value => 500.7 } },
},
}
####
#!/usr/bin/env perl
use strict;
use warnings;
my (%data, %ordered_hash);
$data{meas_1}{suffix_1}{C1}{value} = 10.2;
$data{meas_1}{suffix_2}{C1}{value} = 4.7;
$data{meas_1}{suffix_3}{C1}{value} = 5.2;
$data{meas_1}{suffix_4}{C1}{value} = 11.8;
$data{meas_1}{suffix_5}{C1}{value} = 0.7;
$data{meas_1}{suffix_1}{C2}{value} = 110.2;
$data{meas_1}{suffix_2}{C2}{value} = 204.7;
$data{meas_1}{suffix_3}{C2}{value} = 305.2;
$data{meas_1}{suffix_4}{C2}{value} = 411.8;
$data{meas_1}{suffix_5}{C2}{value} = 500.7;
for my $meas (keys %data) {
my @suffixes = keys %{$data{$meas}};
for my $corner (keys %{$data{$meas}{$suffixes[0]}}) {
push @{$ordered_hash{$meas}{$corner}},
map { $_->[0] }
sort { $b->[1] <=> $a->[1] }
map { [ $_ => $data{$meas}{$_}{$corner}{value} ] } @suffixes;
}
}
use Data::Dump;
dd \%ordered_hash;
####
{
meas_1 => {
C1 => ["suffix_4", "suffix_1", "suffix_3", "suffix_2", "suffix_5"],
C2 => ["suffix_5", "suffix_4", "suffix_3", "suffix_2", "suffix_1"],
},
}