After following the constants through the program reduces to:
my $hideLetter;
my $restoreLetter;
{
my $prevColor;
$hideLetter = sub
{
$prevColor = ($_[0]->itemconfigure(qw(current -fill)))[4];
$_[0]->itemconfigure(qw(current -fill black));
};
$restoreLetter = sub
{
$_[0]->itemconfigure(qw(current -fill), $prevColor);
};
}
my $mainWindow = MainWindow->new( qw(-title jAPH) );
my $canvas = $mainWindow->Canvas(-width => '10c',
-height => '4.25c',
-relief => 'sunken',
-borderwidth => 2);
$canvas->createLine( [qw(2c 1c
3c 1c
2.5c 1c
2.5c 1c
2.5c 3c
2.25c 3.25c
2c 3c)],
-width => '.375c',
-cap => 'round',
-join => 'round',
-tags => 'i',
-fill => 'blue');
$canvas->createLine( [qw(3.5c 3.25c
4c 1c
4.5c 3.25c
4.25c 2.125c
3.75c 2.125c)],
-width => '.375c',
-cap => 'round',
-join => 'round',
-tags => 'i',
-fill => 'red');
$canvas->createLine( [qw(5.25c 3.25c
5.25c 1c
5.75c 1c
6.25c 1.5c
5.75c 2c
5.5c 2.125c
5.25c 2.125c)],
-width => '.375c',
-cap => 'round',
-join => 'round',
-tags => 'i',
-fill => 'green');
$canvas->createLine( [qw(7c 1c
7c 3.25c
7c 2.125c
7c 2.125c
8c 2.125c
8c 1c
8c 1c
8c 3.25c)],
-width => '.375c',
-cap => 'round',
-join => 'round',
-tags => 'i',
-fill => 'yellow');
$canvas->bind( 'i', "<Any-Enter>",
[ \&$hideLetter ] );
$canvas->bind( 'i', "<Any-Leave>",
[ \&$restoreLetter ] );
$canvas->pack( -expand => 'yes',
-fill => 'both' );
MainLoop();
__SIG__
printf "You are here %08x\n", unpack "L!", unpack "P4", pack
"L!", B::svref_2object(sub{})->OUTSIDE;