Из ваших примеров данных видно, что то, что вы пытаетесь сделать, может вписаться в различные веб-технологии (либо в массивную таблицу с фоновыми цветами, либо с нуля с тегом HTML <canvas>
).
Для Perl, вы можете использовать один из многих методов веб-разработки на стороне сервера или использовать что-то вроде XUL :: Gui , который я написал, который в основном использует Firefox (или другой поддерживаемые браузеры) в качестве движка рендеринга графического интерфейса для Perl.
Вот краткий пример, показывающий, как использовать элемент <canvas>
(в данном случае, чтобы нарисовать треугольник Серпинского, из примеров модуля):
use strict;
use warnings;
use XUL::Gui 'g->';
my $width = 400;
my $height = sqrt($width**2 - ($width/2)**2);
g->display(
g->box(
g->fill,
g->middle,
style => q{
background-color: black;
padding: 40px;
},
g->canvas(
id => 'canvas',
width => $width,
height => int $height,
)
),
g->delay(sub {
my $canvas = g->id('canvas')->getContext('2d');
$canvas->fillStyle = 'white';
my @points = ([$width/2, 0],
[0, $height], [$width, $height],
);
my ($x, $y) = @{ $points[0] };
my $num = @points;
my ($frame, $p);
while (1) {
$p = $points[ rand $num ];
$x = ($x + $$p[0]) / 2;
$y = ($y + $$p[1]) / 2;
# draw the point with a little anti-aliasing
$canvas->fillRect($x + 1/4, $y + 1/4, 1/2, 1/2);
if (not ++$frame % 1_000) { # update screen every 1000 points
$frame % 100_000
? g->flush
: g->doevents # keeps firefox happy
}
}
})
);