例如,数字格式为:
1.1.10
1.1.10.1
1.1.10.2
1.1.11
1.1.12
1.1.13
1.1.13.1
1.1.3
1.1.4
我正在寻找的输出是:
1.1.3
1.1.4
1.1.10
1.1.10.1
1.1.10.2
1.1.11
1.1.12
1.1.13
1.1.13.1
最佳答案
use Sort::Key::Natural qw( natsort );
my @sorted = natsort @data;
或(无模块)
my @sorted =
map $_->[0],
sort { $a->[1] cmp $b->[1] }
map [ $_, pack('C*', split /\./) ],
@data;
或(无模块,更快,但需要一个数组而不是输入列表)
my @sorted =
map $data[unpack('N', $_)],
sort
map pack('NC*', $_, split /\./, $data[$_]),
0..$#data;
在
pack
模板,您可以更改C
至n
或 N
. C
最多允许 255 个数字。n
最多允许 65,535 个数字。 N
允许数量高达 40 亿。
关于perl - 在 perl 中使用 x.x.x.x 格式对数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11585390/