use warnings;
use strict;
use Tk;

my $size = 240;      # Canvas-Größe (x, y)
my $step = 10;       # Schrittweite

# Das mw erzeugen
my $mw = MainWindow->new( -width => $size, -height => $size);
$mw->Label(-text => '     Test für Canvas     ')->pack();

# Canvas erzeugen
my $canvas = $mw->Canvas(-cursor     => 'crosshair', 
                         -background => 'yellow',
                         -width      => $size, 
                         -height     => $size)->pack();

# Canvas mit einen Quadrat fuellen, Rand: $step
$canvas->createRectangle($step, $step, $size-$step, $size-$step, 
                         -fill => 'red');

# lauter kleine Rechtecke zeichnen
for( my $i=$step; $i<$size-$step; $i+=$step ) 
  {
  my $val = 255*$i/$size;
  # Trick: Farbe (Grauwert) aus $val ableiten
  # String der Form '#rrggbb' erzeugen
  my $color = sprintf( "#%02x%02x%02x", $val, $val, $val );
  # Rechteck in der Graustufe zeichen
  $canvas->createRectangle($i, $i, $i+$step, $i+$step, 
                           -fill=>$color );
# oder auch:
#  $canvas->createRectangle($i, $size-$i, $i+$step, $i+$step, 
#                           -fill=>$color );
  }

MainLoop;