I'm totally guilty of making large scripts. Why? Well it's easier to debug when developing, since ALL the code is open in your editor. My approach is make a big script, trying to use a big hash to store everything if possible, so if it is a useful script that I want to call often, I can easily turn it into a module, by turning the hash into a blessed $self.
If you havn't already, google for "perl Tk mega", "perl Tk derived", "perl Tk custom widgets", for how to modularize your Tk code snippets.