http://qs1969.pair.com?node_id=612348


in reply to Re: Re: Re: Why CGI::Application?
in thread Why CGI::Application?

This is a tad on the late side. :-)

The situation you discuss earlier is one that I'm also facing. I'd be interested in breaking a C::A into one or more C::As.

I've tried to recreate the method you've used but I've hit a snag.

You have

package My::Application::Base; use CGI::Application; our @ISA = qw( CGI::Application ); sub setup{ # Do basic stuff, including run_modes everyone has, like 'redirect +_login' }
Note the reference to run_modes. Later you have
package My::Application::Reports; use My::Application::Base; our @ISA = qw( My::Application::Base ); sub setup{ my $self = shift; $self->runmodes([qw( choose display )]); }
As far as I can tell the run_modes in Base are overwritten by the run_modes in Reports and I get a "No such run mode..." error when reffering to any run_mode in Base.

Did you encounter this?

Also, how would you implement such a scheme as this? Would each C::A have its own instance script?

Update:

fwi, I've post my attempt here

Replies are listed 'Best First'.
Re: Late to the party, Re^4: Why CGI::Application?
by dragonchild (Archbishop) on May 01, 2007 at 18:22 UTC
    You need to call $self->SUPER::setup() as the first line after my $self = shift;

    My criteria for good software:
    1. Does it work?
    2. Can someone else come in, make a change, and be reasonably certain no bugs were introduced?