Conclusions

  • Separate the three features of what to do, doing it, and displaying the results
  • Use Javascript to decide what to do
    onclick="forms.FORMNAME.action = 'SCRIPTNAME';"
  • Use LWP::UserAgent as a Perl backup when Javascript disabled
  • Separate the processing from the displaying of data
  • Each script is small and just strong enough to do it's own job
  • The display is separate so 'Reload' in browser now won't mangle data again
  • More features can be added without causing special cases in existing features