+ $step+ $step + $step + $Co$W $S $Co$W $S $Co$W $S $Co$W $z $L $z $L $z $L $z $W $L $W $L $W $L $W + + + + #### #!/usr/bin/perl use Strict; my $W = 18; # column width my $H = 31; # column height my $C = 3; # number of column repeats my $L = 5; # number of layers my $S = 4; # step between items my @E = (); seek (DATA,0,0); for () { push @E, /(\$\w+)/g; # harvest scalar names from the source } my @grid = (' 'x($W * $C))x$H; # build the basic array for my $i (0..$C) { # add the registration marks for my $j (0..($#grid / 5)) { substr ($grid[ $j*5 ], $i*$W, 1) = '+'; } } for my $layer (1..$L) { # add items from back to front my $step = $W - $layer; # set the offset for this layer for (my $z=0 ; $z < $H ; $z+=2+rand $S) { my $x = rand ($W); my $y = rand ($H); # choose a random position/string my $e = $E[ rand @E ]; for (my $pos=$x ; $pos