I still don't get how the code in My::App is called. I mean the activate method dispaches to My::App::welcome - how the control goes back? How can I use My::App methods in My::App::welcome? One answer I see is that My::App::welcome should be derived from My::App instead of CGI::Prototype.
Would it not be simpler if the activate function was a Class method so that the My::App object would be completly optional?