in reply to Re^2: Best practices passing database handles, cgi objects, etc.
in thread Best practices passing database handles, cgi objects, etc.

Yes, or better:

use MyApp; my $myapp->new( cgi => CGI->new(), session => CGI::Session->new(), database => DBI->connect() ); print $myapp->process_request();

Where the process_request method is something like:

sub process_request { my $self = shift; $self->cgi->header . $self->do_something; }
use Moops; class Cow :rw { has name => (default => 'Ermintrude') }; say Cow->new->name