the only time I want to see the scrollbars is when the image is larger than 300 x 300
Aha! I think you want to set the -scrollregion. Set the -scrollregion after you have populated the canvas so that the scrollbars can reset to where they need to be. I loaded a 300x300 image and the scrollbars were not there, then I loaded a 400x400 image and the scrollbars both appeared.
use Tk 800.000;
my $main = Tk::MainWindow->new();
-scrollbars => 'osoe',
my $image300x300 = $canvas->Photo(-file=>'300x300.gif');
my $image400x400 = $canvas->Photo(-file=>'400x400.gif');
my $id = $canvas->createImage(200,200,-image => $image400x400);
# configure the scrollregion AFTER you populate the
# canvas widget to reset the scrollbars
$canvas->configure( -scrollregion => [ $canvas->bbox("all") ]);
Is this what you're looking for?
What time is it? It's Camel Time!