--- trunk/lib/WebPAC/Input.pm 2005/07/16 17:14:43 9 +++ trunk/lib/WebPAC/Input.pm 2005/07/16 20:35:30 10 @@ -27,6 +27,7 @@ format => 'NULL', config => $config, lookup => $lookup_obj, + low_mem => 1, ); $db->open('/path/to/database'); @@ -45,12 +46,15 @@ my $db = new WebPAC::Input( format => 'NULL' code_page => 'ISO-8859-2', + low_mem => 1, ); Optional parametar C specify application code page (which will be used internally). This should probably be your terminal encoding, and by default, it C. +Default is not to use C options (see L below). + =cut sub new { @@ -60,6 +64,34 @@ $self->{'code_page'} ||= 'ISO-8859-2'; + my $log = $self->_get_logger; + + # running with low_mem flag? well, use DBM::Deep then. + if ($self->{'low_mem'}) { + $log->info("running with low_mem which impacts performance (<32 Mb memory usage)"); + + my $db_file = "data.db"; + + if (-e $db_file) { + unlink $db_file or $log->logdie("can't remove '$db_file' from last run"); + $log->debug("removed '$db_file' from last run"); + } + + require DBM::Deep; + + my $db = new DBM::Deep $db_file; + + $log->logdie("DBM::Deep error: $!") unless ($db); + + if ($db->error()) { + $log->logdie("can't open '$db_file' under low_mem: ",$db->error()); + } else { + $log->debug("using file '$db_file' for DBM::Deep"); + } + + $self->{'db'} = $db; + } + $self ? return $self : return undef; }