<div>Помогите, окончательно запутался.</div><div><br></div><div>Есть сценарий </div><div><br></div><div><div>#!/usr/bin/perl -w</div><div>BEGIN {</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>$ENV{FCGI_SOCKET_PATH} = ":8000";</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>$ENV{FCGI_LISTEN_QUEUE} = 10;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>use CGI::Carp qw/carpout/;</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>open LOG, ">>", "carp.log" or die("Cannot open file: $!\n");</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>carpout(LOG);</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>use lib "/home/artem/FCGI";</div><div>}</div><div>use strict;</div>
<div>use 5.010;</div><div>use HTML::Template;</div><div>use Data::Dumper;</div><div>use engine::class::Page;</div><div>use engine::class::Core;</div><div>use CGI::Fast;</div><div>use POSIX qw(strftime);</div><div>our $query_cnt = 0;</div>
<div>our $query;</div><div><br></div><div>while($query= CGI::Fast->new()) { </div><div><span class="Apple-tab-span" style="white-space:pre">       </span>print "Content-type: text/html\n\n";</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>eval{</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>$query_cnt++;</div><div><span class="Apple-tab-span" style="white-space:pre">                </span>my $init = Core->new($query_cnt);</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>#say Dumper ($init);</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>foreach my $get ($init->{db}->query("select * from city")){</div><div><span class="Apple-tab-span" style="white-space:pre">                  </span>say $get->{name}." || ";</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>};</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>if ($@){</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>my $now_string = strftime "%Y-%m-%d %H:%M:%S", localtime;</div><div><span class="Apple-tab-span" style="white-space:pre">          </span>open FILE, ">>", "carp.log" or next("Cannot open file: $!\n");</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>print FILE "[".$now_string."][Eval error]".$@."\n";</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>close FILE; </div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>}</div><div>}</div></div><div><br></div><div><br></div><div>пакеты и классы </div><div><br></div><div>#!/usr/bin/perl </div><div><div>package Core; </div><div>
use engine::class::DB;</div><div>@ISA = qw/DB/;</div><div>use warnings;</div><div>use strict;</div><div>use 5.010;</div><div>sub new {</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>my $class = shift;</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>my $self = {</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>version => '1.0',</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>};</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>bless $self, $class;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$self->init(@_);</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>$self->db();</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return $self;</div><div>}</div><div>sub init{</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>my $self = shift;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>$self->{query_cnt} = shift;</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return $self;</div><div>}</div><div>sub db {</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>my $self = shift;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>my $db = DB->dbconnect("логин", "пароль", "база" , "хост", "utf8", "utf8" , "180" );</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>$self->{db} = $db;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>return $self; </div><div><span class="Apple-tab-span" style="white-space:pre">       </span></div>
<div>}</div></div><div>return 1;</div><div><br></div><div><br></div><div><div>#!/usr/bin/perl </div><div>package DB;</div><div>use DBI;</div><div>use strict;</div><div>use warnings;</div><div><br></div><div>sub dbconnect</div>
<div>{</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>my $class = shift;</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>my $self = {</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>_login<span class="Apple-tab-span" style="white-space:pre">              </span>=> shift,</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>_password <span class="Apple-tab-span" style="white-space:pre">  </span>=> shift,</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>_dbname<span class="Apple-tab-span" style="white-space:pre">             </span>=> shift,</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>_host<span class="Apple-tab-span" style="white-space:pre">               </span>=> shift,</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>_charset<span class="Apple-tab-span" style="white-space:pre">    </span>=> shift,</div>
<div><span class="Apple-tab-span" style="white-space:pre">              </span>_names <span class="Apple-tab-span" style="white-space:pre">             </span>=> shift,</div><div><span class="Apple-tab-span" style="white-space:pre">         </span>_timeout<span class="Apple-tab-span" style="white-space:pre">    </span>=> shift,</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>};</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>bless $self, $class;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>$self->connect();</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return $self;</div><div>}</div><div><br></div><div><br></div><div>sub connect </div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>my $self = shift;</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>$self->{_base} = DBI->connect("DBI:mysql:database=$self->{_dbname};host=$self->{_host}", "$self->{_login}", "$self->{_password}") or die "Unable to connect: $DBI::errstr\n";</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>$self->{_base}->do("SET charset $self->{_charset}");</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>$self->{_base}->do("SET names $self->{_names}");</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>$self->{_base}->do("SET session wait_timeout=$self->{_timeout}");</div><div>}</div><div><br></div><div>sub query </div><div>{<span class="Apple-tab-span" style="white-space:pre">      </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>my( $self, $query ) = @_;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>$self->connect() unless $self->{_base}->ping();</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>my $sth = $self->{_base}->prepare($query);</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>$sth->execute;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>return (@{$sth->fetchall_arrayref({})}) and $sth->finish;</div><div>}</div><div><br></div><div>sub query_rw</div><div>{<span class="Apple-tab-span" style="white-space:pre"> </span></div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>my( $self, $query ) = @_;<span class="Apple-tab-span" style="white-space:pre">   </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>$self->connect() unless $self->{_base}->ping();</div>
<div><span class="Apple-tab-span" style="white-space:pre">      </span>$self->{_base}->do($query);</div><div>}</div><div><br></div><div>sub disconnect </div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre">     </span>my $self->{_base}->disconnect;</div>
<div>}</div><div><br></div><div>sub db_handle</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>my $self = shift;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>return $self->{_base};</div>
<div>}</div><div><br></div><div><br></div><div>return 1;</div></div><div><br></div><div><br></div><div>Как мне построить наследование, что б в неком пакете Test я мог добраться до объекта коннекта в базу из Core->{db} и использовать методы класса DB. </div>
<div><br></div><div>В основном сценарии все работает в вот в последующем не получается добраться.</div><div><br>Спасибо.</div><div><br></div>