use strict;
use warnings;
my @array = qw(Patch_1.0 Patch_2.0 Patch_3.1 Patch_5.0 Patch_4.2 Patch_6.0
Patch_7.0 Patch_8.0 Patch_9.3 Patch_10.2 Apatch_11.0);
@array = sort patch_sort @array;
print "$_\n" for @array;
sub patch_sort
{
my ($a_name, $a_version) = $a =~ / (\w+) _ ([\d.]+) $ /x
or die 'Invalid lhs, stopped';
my ($b_name, $b_version) = $b =~ / (\w+) _ ([\d.]+) $ /x
or die 'Invalid rhs, stopped';
return $a_name cmp $b_name ||
$a_version <=> $b_version;
}
####
18:22 >perl 1860_SoPW.pl
Apatch_11.0
Patch_1.0
Patch_2.0
Patch_3.1
Patch_4.2
Patch_5.0
Patch_6.0
Patch_7.0
Patch_8.0
Patch_9.3
Patch_10.2
18:22 >
####
use strict;
use warnings;
use Sort::Naturally;
my @array = qw(Patch_1.0 Patch_2.0 Patch_3.1 Patch_5.0 Patch_4.2 Patch_6.0
Patch_7.0 Patch_8.0 Patch_9.3 Patch_10.2 Apatch_11.0);
@array = nsort @array;
print "$_\n" for @array;