app->attr(dbh => sub { my $self = shift; my $dsn = 'dbi:Oracle:schema'; my $usr = 'Scott'; my $pas = 'tiger'; my $dbh = DBI->connect_cached( $dsn, $usr, $pas ); return $dbh; }); app->attr(cached_query => sub { my $self = shift; my $sql = 'SQL QUERY HERE'; return $self->dbh->prepare_cached( $sql ); }); # later get '/query' => sub{ my $c = shift; my $dbh = $c->app->dbh; my $sth = $c->app->cached_query; # probably pull @values out from GET query or POST data my @values = do { ... }; my $results = $dbh->selectall_arrayref($sth, {}, @values); # and so on };