|
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) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/45563c8f9d2d.html, оценка из 5, голосов 10
|