sub deepsort { substr( $_[0], $p[0], $l[0]) cmp substr( $_[1], $p[0], $l[0] ) || substr( $_[0], $p[1], $l[1]) cmp substr( $_[1], $p[1], $l[1] ) || ....ad nauseum } @sorted = sort 'deepsort', @list;