@array = map { $_->[0] } sort { $a->[1] <=> $b->[1] } map { [$_ => get_num($_)] } @array; sub get_num { my $string = shift; my ($num) = $string =~ /(\d+)/; return $num; }