use strict; use warnings; use List::Util 'shuffle'; my @list = shuffle('A'..'N', 'I'..'K'); my $pick = 'J'; print sort {(($a lt $pick) == ($b lt $pick)) ? ($a cmp $b) : ($b cmp $a)} @list;