比如说数字是格式的:
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;
在包模板中,您可以将C更改为n或N. C允许最多255个数字.n允许数字最多为65,535. N允许数量高达40亿.