Some good things to do to aknowledge your best subs structure:
Even though you won't frequently see here all the examples subs well docummented at the begining of them, I have noticed that every good programmer does it. Here it is assumed that most of the readers know most of the code exposed. So any further explanation is needless. But self documenting the subs helps a lot so that you could order your mind before writing every subrutine. You could specify: what does the following sub do, what are the arguments that it receives, and what are the variables that it returns. Some times, just by writing this part I change a lot of what the sub is going to do.
After you have proved that your script is working fine, you could try adding some different aproaches on the same code. Sometimes, by changing these concepts, you finish restructuring all your subroutines. After trying several times the same code with different changes (say, optimizing your code for different situations, or users, or needs) you surely reach to a perfect idea of what each subroutine should do, and what shouldn't.