use Sort::Key::Natural qw( natsort ); my @sorted = natsort @data;
or (without modules)
my @sorted = map $_->[0], sort { $a->[1] cmp $b->[1] } map [ $_, pack('C*', split /\./) ], @data;
or (without modules, faster, but input requires an array, not a list)
my @sorted = map $data[unpack('N', $_)], sort map pack('NC*', $_, split /\./, $data[$_]), 0..$#data;
In pack templates, you can change C to n or n . C allows numbers up to 255. n allows numbers up to 65535. n allows numbers up to 4 billion.
source share