Suprisingly enough this question comes up often and it is not a stupid limitation of CGI::Application,
but a failure to understand how CGI::Application works (
may help you visualize it).
A bunch of methods get called and in one of them a runmode is chosen (usually sub setup).
Then the runmode is executed and it's output returned to the browser.
The only way to change the run mode from the runmode is to use goto.
Make sense? Now code for it.