Nice work; here's some suggestions:
- Use modules on CPAN instead of reinventing the wheel(s).
- Don't hardcode things like browser paths and choices. This breaks portability, and is bound to tick off a user who absolutely despises Lynx because it's the ugliest program that they've ever seen. :) (like yours truly, who prefers ELinks)
- Use existing protocols which are designed for certain tasks, instead of forcing their functionality to be hacked into working in a web environment. Specifically I'm speaking about the DICT protocol, but this applies elsewhere as well.