#!/usr/bin/perl -w use strict; my @list = qw/715b E9 715a 614 715 C18 1 4 12a 12/; my @sorted = map{$_->[0]} sort{$a->[1] cmp $b->[1] || $a->[2] <=> $b->[2] || $a->[3] cmp $b->[3]} map{[$_,/(\D*)(\d+)(\D*)/]} @list; print join("\n", @sorted),"\n";