use strict; my @array = qw(abc1 abc32 abc64 abc8 abc16); my @sorted_array = map { $_->{string} } sort { $b->{number} <=> $a->{number} } map { /(\d+$)/; { string => $_, number => $1 } } @array;