in reply to CGI::Application Error
You are shifting the first argument into $self, and then calling methods on it as if it were an object. However, the point of new is to create an object. The first argument is the name of the class, which in this case is 'bluebox'.sub new { my $self = shift; my $q = $self->query(); my $output; my $dbh = $self->param('dbh'); return $output; }
A standard new method might look something like this:
This creates a hash with some initial values, blesses the hash as a member of $class, and returns the resulting object.sub new { my $class = shift; my %data = { 'member data' => 'initial value' }; return bless \%data, $class; }
In your module, you're inheriting from CGI::Application; you probably want to let CGI::Application create the object.
I haven't tested this approach with CGI::Application. It depends on CGI::Application being properly written to support inheritance. That means that CGI::Application's new method, when it calls bless, must use whatever class name was passed in, rather than hard-coding 'CGI::Application'.sub new { my $class = shift; my $self = $class->SUPER::new(); # call CGI::Application's new meth +od # do your own initialization, as desired }
Update: P.S. If you don't need to do any extra initialization in the new method, you can simply inherit CGI::Application's new method, rather than defining your own.
|
---|
Replies are listed 'Best First'. | |
---|---|
Re: Re: CGI::Application Error
by czarfred (Beadle) on Nov 19, 2001 at 06:51 UTC |