#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11143026 use warnings; use List::AllUtils qw( sort_by ); print <<'EOF'; .,-;:!?"'`_#$%&*+/|=@\^~()<>[]{}0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz intended sequence !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ natural ASCII sequence EOF my @list = qw{ "Hello" Abel (hello) {adieu} @adieu [goodbye] Charlie ^Charlie ~Adieu zebra 21708 baker . - ; : ! ? " ' ` _ }; my @normalsorted = sort @list; print "@normalsorted\n\n"; my @newsorted = sort_by { tr/ .,\-;:!?"'`_#$%&*+\/|=@\\^~()<>[]{}0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz/ -~/r } @list; print "@newsorted\n\n"; #### .,-;:!?"'`_#$%&*+/|=@\^~()<>[]{}0123456789AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz intended sequence !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ natural ASCII sequence ! " "Hello" ' (hello) - . 21708 : ; ? @adieu Abel Charlie [goodbye] ^Charlie _ ` baker zebra {adieu} ~Adieu . - ; : ! ? " "Hello" ' ` _ @adieu ^Charlie ~Adieu (hello) [goodbye] {adieu} 21708 Abel baker Charlie zebra