X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXDb.pm;h=db26d4aacf5b8329732e132e4ad7c303061cdc91;hb=f7ad460466e7e783eda20d467146ef29fde1f4fa;hp=a7f31acca8ec1f4e07b59c187b910e252b77e812;hpb=0bd9d2811cc42417676a1b11b121681c2377d70a;p=spider.git diff --git a/perl/DXDb.pm b/perl/DXDb.pm index a7f31acc..db26d4aa 100644 --- a/perl/DXDb.pm +++ b/perl/DXDb.pm @@ -48,6 +48,12 @@ $lastprocesstime = time; $nextstream = 0; %stream = (); +use vars qw($VERSION $BRANCH); +$VERSION = sprintf( "%d.%03d", q$Revision$ =~ /(\d+)\.(\d+)/ ); +$BRANCH = sprintf( "%d.%03d", q$Revision$ =~ /\d+\.\d+\.(\d+)\.(\d+)/ ) || 0; +$main::build += $VERSION; +$main::branch += $BRANCH; + # allocate a new stream for this request sub newstream { @@ -76,9 +82,10 @@ sub load { my $s = readfilestr($dbbase, "dbs", "pl"); if ($s) { - my $a = { eval $s } ; + my $a; + eval "\$a = $s"; confess $@ if $@; - %avail = %{$a} if $a + %avail = ( %$a ) if ref $a; } } @@ -255,18 +262,18 @@ sub process my $db = getdesc($f[4]); if ($db) { if ($db->{remote}) { - sendremote($dxchan, $f[2], $f[3], $dxchan->msg('dx1', $db->{remote})); + sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db1', $db->{remote})); } else { my $value = $db->getkey($f[5]); if ($value) { my @out = split /\n/, $value; sendremote($dxchan, $f[2], $f[3], @out); } else { - sendremote($dxchan, $f[2], $f[3], $dxchan->msg('dx2', $f[5], $db->{name})); + sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db2', $f[5], $db->{name})); } } } else { - sendremote($dxchan, $f[2], $f[3], $dxchan->msg('dx3', $f[4])); + sendremote($dxchan, $f[2], $f[3], $dxchan->msg('db3', $f[4])); } last SWITCH; } @@ -347,6 +354,9 @@ sub AUTOLOAD $name =~ s/.*:://o; confess "Non-existant field '$AUTOLOAD'" if !$valid{$name}; + # this clever line of code creates a subroutine which takes over from autoload + # from OO Perl - Conway + *{$AUTOLOAD} = sub {@_ > 1 ? $_[0]->{$name} = $_[1] : $_[0]->{$name}} ; @_ ? $self->{$name} = shift : $self->{$name} ; }