在 Perl 中对数组数组的哈希值进行排序

Sorting a Hash of Hashes of Array of Arrays in Perl

我做了一个散列 (%locus) 来组织我的数据,当我用 Data::Dumper 打印它时,它显示了数据结构:

'locus8 >9.2668516.276570.GABA3.1.54.6586237.218516.2718570 74280 74440 locus8' 
 => {    
 '3 70.75 0.995018 -1.89 -' => [          
   [                                                                           
    'window10',                                                'locus8',         
    '>9.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74280',      
     '74400',                                                  '-',              
    '3',                                                      '120',        
    '55.87',                                                  '-17.41',         
    '-11.92',                                                 '-10.60',         
    '-1.32',                                                  '1.57',           
    '-1.58',                                                  '0.68',           
    '2.76',                                                   '0.995018'        
    ],                                                                          
    [                          
      'window11',                                                'locus8',   
      '>9.2668516.276570.GABA3.1.54.6586237.218516.2718570', '74320',          
      '74440', '-', '3', '120', '70.75', '-22.97', '-17.28', '-15.07', '-2.21', 

      '-1.89', '0.75', '1.95', '0.976184'                                       
    ]  
  ]                                                                             
  },

如何按数组中的最后一个元素对内部数组进行排序 $_[17]

[                                                           
  [
    'window11',                                                'locus8',
    '>9.+.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74320',
    '74440',                                                   '-',
    '3',                                                       '120',
    '70.75',                                                   '-22.97',
    '-17.28',                                                  '-15.07',
    '-2.21',                                                   '1.55',
    '-1.89',                                                   '0.75',
    '1.95',                                                    '0.976184'
  ],
  [
    'window10',                                                'locus8',
    '>9.+.2668516.2768570.GABA3.1.54.6586237.2718516.2718570', '74280',
    '74400',                                                   '-',
    '3',                                                       '120',
    '55.87',                                                   '-17.41',
    '-11.92',                                                  '-10.60',
    '-1.32',                                                   '1.57',
    '-1.58',                                                   '0.68',
    '2.76',                                                    '0.995018'
  ],
]

我想保持数据结构但是,用'internal arrays'整理。提前致谢。

我只是猜猜你在找什么,因为你不清楚你想要什么。

for my $outher (values %hash) {
    for my $inner (values %$outher) {
        @$inner = sort {$a->[17] <=> $b->[17]} @$inner;
    }
}