X-Git-Url: http://dxcluster.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=perl%2FDXDb.pm;h=6ccb9105c3307426b5c430a60fa438c5bda0ec39;hb=c93f88a789fe3aabaee2b0e32db735d5ef69ced3;hp=a7f31acca8ec1f4e07b59c187b910e252b77e812;hpb=0bd9d2811cc42417676a1b11b121681c2377d70a;p=spider.git diff --git a/perl/DXDb.pm b/perl/DXDb.pm index a7f31acc..6ccb9105 100644 --- a/perl/DXDb.pm +++ b/perl/DXDb.pm @@ -76,9 +76,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; } } @@ -347,6 +348,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} ; }