我有具有鍵如下哈希:如何使用「=」和「。」來排序哈希字母數字鍵。
m2-10.10845.857-10.3145.857
m2-10.3145.857-10.42545.857
m2-10.42545.857-10.62845.857
m2-10.62845.857-10.83645.857
m2-11.60745.857-12.11745.857
m2-7.80945.857-8.01645.857
m2-8.01645.857-8.13145.857
m2-8.13145.857-8.24645.857
m2-8.24645.857-8.44345.857
m2-8.44345.857-9.7945.857
m2-9.7945.857-9.90545.857
m2-9.90545.857-10.10845.857
我想,他們似乎他們進行排序的方式如下:
m2-11.60745.857-12.11745.857
m2-10.62845.857-10.83645.857
m2-10.42545.857-10.62845.857
m2-10.3145.857-10.42545.857
m2-10.10845.857-10.3145.857
m2-9.90545.857-10.10845.857
m2-9.7945.857-9.90545.857
m2-8.44345.857-9.7945.857
m2-8.24645.857-8.44345.857
m2-8.13145.857-8.24645.857
m2-8.01645.857-8.13145.857
m2-7.80945.857-8.01645.857
我試着用
foreach my $key(sort {$h{$a} cmp $h{$b} } keys %h){
printf FHOUT "$h{$key}\n";
}
但它沒有奏效。我該怎麼做呢?
更新: 就想出了一個解決方案:
my @keys = sort{substr($h{$a},3,8) <=> substr($h{$b},3,8) } keys %h;
print "$_\n" for @keys;
但是,怎樣才能使之更加通用的?
它是如何出來的?什麼不工作?請[編輯]你的問題,幷包括它的錯誤。 – simbabque
它來如:'m2-10.10845.857-10.3145.857 m2-10.3145.857-10.42545.857 m2-10.42545.857-10.62845.857 m2-10.62845.857-10.83645.857 m2-11.60745 .857-12.11745.857 m2-7.80945.857-8.01645.857 m2-8.01645.857-8.13145.857 m2-8.13145.857-8.24645.857 m2-8.24645.857-8.44345.857 m2-8.44345 .857-9.7945.857 m2-9.7945.857-9.90545.857 m2-9.90545.857-10.10845.857' –
您的問題與進一步的信息。 – Sobrique