#!/usr/bin/perl use strict; # https://perlmonks.org/?node_id=11146802 use warnings; use List::Util qw( max ); $| = 1; my @values = (7,9,2,0,1,2,4,3,9); my ($rows, $columns) = split ' ', qx(stty size); # FIXME works on Linux $rows -= 2 ; # FIXME fudge my @grid = map { ' ' x $columns } 1 .. $rows; my $max = max @values; my $scale = int $rows / $max; my $wide = int $columns / @values; my $horizontal = 0; for my $value ( @values ) { for my $vert ( $rows - 1 - $value * $scale .. $rows - 1 ) { substr $grid[ $vert ], $horizontal, $wide - 1, '*' x ($wide - 1); } $horizontal += $wide; } print @grid;