use constant ST => ('-1', ' =', ' 0', ' =', ' 1'); printf ' ' x 8 . "%s\n", join ' ', map sprintf('%2d', $_), -9 .. 10; while () { my ($l, $r) = split; printf "[%2d %2d] %s\n", $l, $r, join ' ', map { (ST)[ ($_ <=> $l) + ($_ <=> $r) + 2 ] } -9 .. 10; } __DATA__ 1 4 2 5 3 7 0 3 -1 5 -8 -2