package TextPrinter; use strict; use warnings; use Term::ANSIColor; my @colours = ( color('reset'), # filler ( map { color($_,'on_white') } 'blue', 'green', ), ( map { color($_,'on_black') } 'dark yellow','dark green', ), ); sub draw_cell { my ($cell) = @_; print $colours[$cell->[0]], $cell->[1]; } { my $white = color('black','on_white'); my $reset = color('reset'); sub draw_row { my ($row,$scale)=@_; $scale||=1; print $white,' 'x(3*$scale); for my $cell (@$row) { draw_cell($cell) for 1..$scale; } print $white,' 'x(3*$scale); print $reset,"\n"; } sub draw_empty_row { my ($row,$scale)=@_; $scale||=1; print $white,' 'x((6+@$row)*$scale),$reset,"\n" for 1..(3*$scale); } } sub draw_whole { my ($arr,$scale)=@_; $scale||=1; draw_empty_row($arr->[0],$scale); for my $row (@$arr) { draw_row($row,$scale) for 1..$scale; } draw_empty_row($arr->[0],$scale); } 1;