次のような 1,660 行の配列があります。
...
H00504
H00085
H00181
H00500
H00103
H00007
H00890
H08793
H94316
H00217
...
そして主人公は変わらない。常に「H」の場合は 5 桁です。しかし、Perl での数値ソートであると信じていることを実行すると、奇妙な結果が得られます。一部のセグメントは順番にソートされますが、別のセグメントが開始されます。ソート後のセグメントは次のとおりです。
...
H01578
H01579
H01580
H01581
H01582
H01583
H01584
H00536
H00537
H00538
H01585
H01586
H01587
H01588
H01589
H01590
...
私がしようとしているのはこれです:
my @sorted_array = sort {$a <=> $b} @raw_array;
しかし、明らかにそれは機能していません。理由を知っている人はいますか?
これらの値はすべて先頭に「H」が付加されていますが、将来、他の文字が先頭に付加された追加データになる可能性があることを付け加えておきます。これは、H を削除し、並べ替えてから H を置き換えることは解決策ではないことを意味します。