1

Я сделал хэш (%locus), чтобы организовать мои данные, когда я печатаю его с Data::Dumper он показывает структуру данных:Сортировки хэша хэш массивов массивов в Perl

'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' 
    ], 
] 

Я хочу сохранить структуру данных, но с организованными «внутренними массивами». Заранее спасибо.

+0

Вы должны указать ваши требования более подробно, что вы есть и что вы хотите, и меньше по богатству ваших данных, которые отталкивает людей от ответа вам, потому что они не могут увидеть «большую картину». Smoething, как у меня есть '{foo => {bar => [[1,2,3], [4,5,0]]}}' и я хочу '{foo => {bar => [[4,5 , 0], [1,2,3]]}} '. Вы видите differnece? –

+0

Вам нужно отформатировать образец кода в своем вопросе более правильно - код в основном невидим из-за боковой прокрутки и чрезмерно глубокого углубления. Вы можете попытаться запустить ['perltidy'] (https://metacpan.org/pod/Perl::Tidy) против него, чтобы очистить вещи или использовать« короткие »опции для« Data :: Dump », если вы выводите '% locus'. –

ответ

1

Я просто пытаюсь угадать, что вы ищете, потому что вам непонятно, чего вы хотите.

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