#!/usr/bin/env perl -l use strict; use warnings; my @array = qw{ Patch_11.4 Patch_1.0 Patch_2.0 Patch_3.1 Patch_5.0 Patch_4.2 Patch_6.0 Patch_11.0 Patch_7.0 Patch_8.0 Patch_9.3 Patch_10.2 Patch_11.2 }; @array = map substr($_, 2), sort map pack("C2", /^Patch_(\d+)\.(\d+)/) . $_, @array; print for @array; #### $ perl -E 'my @x = qw{X1.2 X3.4}; say "@$_" for map { [ $_, /X(\d+)\.(\d+)/ ] } @x' X1.2 1 2 X3.4 3 4