Имеем такой код: my $database = "db"; my $hostname = "localhost"; my $port = "3306"; my $user = "user"; my $password = "password"; sub CALC { my ($dbh,$sql,$sth); $dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",$user, $password); $sql = "SELECT count(*),round(sum(a)),round(sum(b))"; $sql .= "FROM qwe"; $sql .= "GROUP BY 'c'"; $sth = $dbh->prepare($sql); $sth->execute; return $sth->fetchrow_array(); $sth->finish; $dbh->disconnect; } sub SELECT { my ($dbh,$sql,$sth,$n,$a,$b); $dbh = DBI->connect("DBI:mysql:$database:$hostname:$port",$user, $password); $sql = "SELECT x,y FROM z"; $sth = $dbh->prepare($sql); $sth->execute; while ( ($x,$y) = $sth->fetchrow() ) { ($n,$a,$b)=CALC; } $sth->finish; $dbh->disconnect; } &SELECT; Получается, что сначала устанавливается соедиинение с базой в процедуре SELECT, выполняется запрос к БД, и по мере возврата значений, для каждой строки выполняется процедура CALC, в которой опять же устанавливается соединение с той же БД и выполняется запрос, что не есть хорошо... Как установить один раз соединение с БД и потом просто делать запросы из разных процедур?