#! perl -slw use strict; my @sorted = 'a'..'z'; our $COLS ||= 3; my $offset = int @sorted / $COLS; for my $s ( 0 .. $offset ) { print join' ', grep defined, @sorted[ map{ $s + ($offset * $_) + $_ } 0 .. $COLS - 1 ]; } __END__ P:\test>test -COLS=3 a j s b k t c l u d m v e n w f o x g p y h q z i r P:\test>test -COLS=4 a h o v b i p w c j q x d k r y e l s z f m t g n u P:\test>test -COLS=5 a g m s y b h n t z c i o u d j p v e k q w f l r x