I'm not the best at breaking things down into modules, but I may offer one bit of advice. You can have a single script be your starting point defining a $mw, with all the various helper scripts, put into modules, that accept the $mw as it's SUPER. Look at my simple
module
Tk::CanvasDirTree for how to use it. You can make as many of your own modules as you want,using my module as a model, and put update methods in them, then call $mymod->update($values) from your main script.
use Tk::widgets qw/Canvas/;
use base qw/Tk::Derived Tk::Canvas/;
sub ClassInit
{
my ($class, $mw) = @_;
$class->SUPER::ClassInit($mw);
$mw->bind($class, "<1>" =>'pick_one' );
return $class;
}