When you manually make Scrollbars, you must define what they do. Use a Tk::Scrolled widget if you want automatic scrolling. Sometimes, an short example is worth 10,000 words. See
Re: I seek illumination and knowledge or
#!/usr/bin/perl
##########
use Tk;
use strict;
my $mw=tkinit;
my $c=$mw->Scrolled('Canvas',
-width=>400,
-height=>400,
-bg=>'red',
-scrollregion=>[0,0,1000,1000],
-scrollbars=>'se')->pack(-expand=>1, -fill=>'both');
$c->create('rect',&n) for (0..40);
my $id = $mw->repeat(100,sub{
$c->xviewScroll(1,'units');
$c->yviewScroll(1,'units');
});
$mw->after(10000, sub{$id->cancel});
MainLoop;
sub n
{
my ($x1,$y1) = ( rand(1000), rand(1000) );
my ($x,$y) = ($x1/2,$y1/2);
return ($x,$y,$x1,$y1);
}