Главная страница


ru.perl

 
 - RU.PERL ----------------------------------------------------------------------
 From : Sergey Prozhogin                     2:5030/324.324 13 Mar 2002  19:38:44
 To : All
 Subject : враппер для DBI соединений
 -------------------------------------------------------------------------------- 
 
 
 написал я такой враппер, текст ниже, а он почему-то не работает под чистым
 перлом, только в модперле. где могут быть грабли?
 
 спасибо
 === Cut ===
 package DBW;
 
 $DBW::VERSION = '0.1';
 
 use Exporter();
 use DBI;
 
 @ISA    = qw(Exporter);
 @Export = qw(new);
 
 sub new
 {
         my ($class, $arg) = @_;
 
         my $self = {};
         bless $self, $class;
 
         $connect = 1 unless( defined( $connect ));
 
         $self->{DBH} = DBI->connect(@$arg) ||
         do{
                 warn "error open $arg->[0]:".DBI->errstr()."\n";
                 $self->{ERRSTR} = DBI->errstr();
                 return undef;
         };
 
         $self->{CONNECT} = $$.$connect;
         $self->{CALLER} = caller();
         $self->{CALLER} =~ s/ROOT/\//g;
         $self->{CALLER} =~ s/::/\//g;
         $self->{CALLER} =~ s/_2e/\./g;
         $self->{CALLER} =~ s/_3//g;
 
         $connect ++;
 
         open FH, '>>/var/loancatlogs/connections.log' or warn 'can not open
 file';
         print FH "opened:$self->{CONNECT}|$self->{CALLER}\n";
         close FH;
 
         $self->{DBH};
 }
 
 sub reconnect( $;$ )
 {
         my $self = shift;
         my $arg  = shift || return;
 
         if( exists $self->{DBH} ){
                 $self->{DBH}->disconnect();
                 open FH, '>>/var/loancatlogs/connections.log' or warn 'can not
 open file';
                 print FH "closed:$self->{CONNECT}|$self->{CALLER}\n";
                 close FH;
                 delete $self->{DBH};
         }
 
         $self->{DBH} = DBI->connect(@$arg) ||
         do{
                 warn "error open $arg->[0]:".DBI->errstr()."\n";
                 $self->{ERRSTR} = DBI->errstr();
                 return undef;
         };
 
         $self->{CALLER} = caller();
         $self->{CALLER} =~ s/ROOT/\//g;
         $self->{CALLER} =~ s/::/\//g;
         $self->{CALLER} =~ s/_2e/\./g;
         $self->{CALLER} =~ s/_3//g;
 
         open FH, '>>/var/loancatlogs/connections.log' or warn 'can not open
 file';
         print FH "opened:$self->{CONNECT}|$self->{CALLER}\n";
         close FH;
 
         $self->{DBH};
 }
 
 sub errstr($)
 {
         my $self = shift;
         $self->{ERRSTR};
 }
 
 sub dbh($)
 {
         my $self = shift;
         $self->{DBH};
 }
 
 sub DESTROY
 {
         my $self = shift;
 
         if( exists $self->{DBH} ){
                 $self->{DBH}->disconnect();
                 delete $self->{DBH};
 
                 open FH, '>>/var/loancatlogs/connections.log' or warn 'can not
 open file';
                 print FH "closed:$self->{CONNECT}|$self->{CALLER}\n";
                 close FH;
         }
 }
 
 1;
 === Cut ===
 
 use DBW;
 
 my $dbh = new DBW(['frivername:dbase', 'username', 'passwd']) || die
 
 DBW->errstr();
 
 -= главное не взpываться, когда настyпаешь на минy...
     \\/br \\cc pro
 --- kulatsky podpevala 3.00b2
  * Origin: Renton WA 98058 (2:5030/324.324)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 враппер для DBI соединений   Sergey Prozhogin   13 Mar 2002 19:38:44 
 враппер для DBI соединений   Andrew Alakozow   15 Mar 2002 11:11:00 
Архивное /ru.perl/45563c8f9d2d.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional