my @arr = map { $_->[0] } sort { $a->[1] cmp $b->[1] } map { [ $_, sort_key($_) ] } @arr; sub sort_key { my $str = shift; my $first = substr($str, 0, 1) eq "X" ? "0" : "1"; return $first . $str; }