I'm not all that familiar with CGI::Application but I don't think you're doing the subclassing right. You shouldn't need @ISA at all.
use base 'CGI::Application' should handle that for you. It doesn't look like you ever call the parent constructor. Here's how I would do it:
package Foo;
use base qw(CGI::Application);
use Bar;
sub new {
my $class = shift;
# SUPER refers to CGI::App because of 'use base'
my $self = $class->SUPER::new();
$self->{ stuff } = 'whatever';
$self->{ bar } = Bar->new(); # I wouldn't use 'super' as a key he
+re
return $self;
}
# etc ...
Now in your script:
use Foo;
my $app = Foo->new();
... should have access to all of Foo's methods and all of CGI::App's methods