use strict; use warnings; use List::Util 'shuffle'; use SortCustom; SortCustom::set_order( '-','+', map { $_, lc $_ } ('A'..'Z') ); my @values = shuffle( ('a'..'z','A'..'Z','+','-') ); my @nsort = sort @values; my @csort = sort { SortCustom::csort($a,$b) } @values; for (0..$#values) { printf "%s : %s\n", $nsort[$_], $csort[$_] }