c:\@Work\Perl\monks>perl -wMstrict -le "my @things = qw( zero one two three four five six seven eight nine ten eleven twelve thirteen fourteen fifteen sixteen seventeen ); ;; use constant COLS => 3; use constant FMT => '%10s ' x COLS; ;; for my $max (0 .. $#things) { my @stuff = @things[0 .. $max]; my $k = @stuff / COLS; $k = int($k + 1) if int($k) != $k; ;; my @rows; $rows[$_ % $k][$_ / $k] = $stuff[$_] for 0 .. $#stuff; ;; for my $ar_row (@rows) { printf qq{${ \FMT }\n}, @$ar_row, ('') x COLS; } print '--------------'; } " #### zero -------------- zero one -------------- zero one two -------------- zero two one three -------------- zero two four one three -------------- zero two four one three five -------------- zero three six one four two five -------------- ... ... -------------- zero six twelve one seven thirteen two eight fourteen three nine fifteen four ten five eleven -------------- zero six twelve one seven thirteen two eight fourteen three nine fifteen four ten sixteen five eleven -------------- zero six twelve one seven thirteen two eight fourteen three nine fifteen four ten sixteen five eleven seventeen --------------