my @dupes = qw( a b c d e f g h i j k l m n o p q r s t u v w ); my $num_cols = int( @dupes / 10 ) + 1; if ($num_cols > 3) { $num_cols = 3; } my $num_rows = int( $#dupes / $num_cols ) + 1; for my $r ( 0 .. $num_rows-1 ) { for my $c ( 0 .. $num_cols-1 ) { my $i = $r + $c * $num_rows; last if $i > $#dupes; print("\t$dupes[$i]"); } print("\n"); }