我有下面的格式的密鑰的哈希:排序哈希抓好兩個參數
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 - 你必須做一些工作,爲尋找這些數字你的字符串,但接受的答案是你需要的結構明智的。您可能希望將其與Schwartzian變換結合使用。 – simbabque
是否有blablabla_NUMBER與修復發生或blablabla&NUMBER可能會變得像blablabla_blablabla_NUMBER? – AbhiNickz
@AbhiNickz,想一想你的問題,也許有時可能會發生中間數字不是數字。這些出現應該出現在最後,並按第二個數字排序(總是存在) – cucurbit