This isn't such a unique problem, it's just a standard multi-form input app. You can certainly model this in CGI::Application or anything else. I would suggest you steal ideas from
. I would also suggest you don't tear your hair out trying to come up with a generic solution. If you just code it as a normal multi-page form app with separate actions (or run-modes or whatever) for each page you will probably start to notice redundancies which you can then factor out into supporting classes.