# First, sort @arr1. @arr1 = sort { my ($c) = $a =~ /:::(\d+)$/; my ($d) = $b =~ /:::(\d+)$/; +$c <=> +$d } @arr1; # Then recreate @arr2. @arr2 = map { s/^.*:::(\d+)$/$1/ } @arr1;