У меня есть хэш с ключами в следующем формате:Сортировка хэш идет к двум параметрам
scaffold_902_159
scaffold_2_1980420
scaffold_2_10
scaffold_10_402
Я хочу, чтобы распечатать хэш отсортированного в следующем формате:
scaffold_2_10
scaffold_2_1980420
scaffold_10_402
scaffold_902_159
Так первым Я должен заказать численное наблюдение за первым номером, а затем посещать последний. Я не хочу, чтобы регулярное выражение искало «scaffold_», так как это может различаться. Я имею в виду, что у меня может быть хеш с другим форматом, например «blablabla_NUMBER_NUMBER, или blablablaNUMBER_NUMBER». Последняя часть ключа _NUMBER, является единственной вещью, которая является постоянной.
Я этот код, но только сортирует численно присутствовать на первый номер:
my @keys = sort {
my ($aa) = $a =~ /(\d+)/;
my ($bb) = $b =~ /(\d+)/;
$aa <=> $bb;
} keys %hash;
foreach my $key (@keys) {
print $key;
}
Любое предложение?
Связанные, если не дублировать: http://stackoverflow.com/q/8556331/1331451 - Вы должны были бы сделать некоторую работу для нахождения этих чисел в ваши строки, но принятый ответ - это то, что вам нужно конструктивно. Возможно, вы захотите объединить это с преобразованием Шварца. – simbabque
Есть ли blablabla_NUMBER с исправлением или blablabla & NUMBER может получить изменение, например blablabla_blablabla_NUMBER? – AbhiNickz
@AbhiNickz, думая немного больше о вашем вопросе, может быть, иногда может случиться, что среднее число не является числом. Эти осколки должны появляться в конце и, естественно, сортироваться по второму числу (которое всегда есть) – cucurbit