my @sizes = qw/6XS 5XS 6XL L S xL m 3xs/; my $sort_sizes_sub = sub { my $uc_a = uc($a); my $uc_b = uc($b); my @sizes_sorted = qw/6XS 5XS 4XS 3XS 2XS XS S M L XL XXL 2XL 3XL 4XL 5XL 6XL/; return 0 if $uc_a eq $uc_b; foreach my $s (@sizes_sorted) { if ($s eq $uc_a) { return -1; } if ($s eq $uc_b) { return 1; } } }; print join(' ', @sizes). "\n"; print join(' ', sort $sort_sizes_sub @sizes). "\n";