It may be a bit long, but I know this works.
-------------------------------------------------------------
#!/usr/bin/perl
@list = ("1", "3.4b.4", "2", "15", "123", "2.2", "2.13", "2.1.7", "3112", "3.4a", "1.5.32.1", "3.4.1", "3.1.5", "3.4b.1");
foreach $section (@list) {
my @subSections = split (/\./, $section);
for (my $x=0; $x <= $#subSections; $x++) {
if ($maxdigit
$x < length($subSections
$x)) { $maxdigit
$x = length($subSections
$x); }
}
}
my @paddedList = ();
foreach $section (@list) {
my @subSections = split (/\./, $section);
my $paddedSection = "";
for (my $x=0; $x <= $#subSections; $x++) {
my $padding = "";
for(my $y = 0; $y < $maxdigit
$x-length($subSections
$x); $y++) { $padding .= "0"; }
$paddedSection .= "$padding$subSections
$x.";
}
$paddedSection =~ s/\.$//;
push (@paddedList, $paddedSection);
}
@sortedList = sort @paddedList;
foreach $section (@sortedList) {
my @subSections = split (/\./, $section);
my $unPaddedSection = "";
for (my $x=0; $x <= $#subSections; $x++) {
$subSections
$x =~ s/^0*//;
$unPaddedSection .= "$subSections
$x.";
}
$unPaddedSection =~ s/\.$//;
push (@unPaddedList, $unPaddedSection);
}
foreach $li (@unPaddedList) {
print "$li\n";
}
-------------------------------------------------------------