比如说数字是格式的:
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
Run Code Online (Sandbox Code Playgroud)
而我正在寻找的输出是:
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
Run Code Online (Sandbox Code Playgroud)
ike*_*ami 11
use Sort::Key::Natural qw( natsort );
my @sorted = natsort @data;
Run Code Online (Sandbox Code Playgroud)
或(没有模块)
my @sorted =
map $_->[0],
sort { $a->[1] cmp $b->[1] }
map [ $_, pack('C*', split /\./) ],
@data;
Run Code Online (Sandbox Code Playgroud)
或(没有模块,速度更快,但需要数组而不是输入列表)
my @sorted =
map $data[unpack('N', $_)],
sort
map pack('NC*', $_, split /\./, $data[$_]),
0..$#data;
Run Code Online (Sandbox Code Playgroud)
在pack模板中,您可以更改C为n或N.C允许最多255个n数字.允许最多65,535的数字.N允许数量高达40亿.