使用perl中的格式xxxx对数字进行排序

iDe*_*Dev 6 sorting perl

比如说数字是格式的:

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模板中,您可以更改CnN.C允许最多255个n数字.允许最多65,535的数字.N允许数量高达40亿.