use strict; use warnings; use List::SomeUtils qw(nsort_by); my @list = ( '1,cat', '2,dog', '22,mouse', '11,eel', '001,elk', '13,mink'); my @sorted = nsort_by {/0*(\d+)\,/;$1} @list; {local $" = q(', '); print qq('@sorted'\n);}