#!/usr/bin/perl -W
use Fcntl;
use DB_File;
if ($#ARGV < 0) {
print "Error: arguments missing.\n\n";
&usage;
exit -1;
}
my $param_file = shift;
my %param_rows;
my $dbfilename = "$param_file" . ".db";
tie(%param_rows, DB_File, $dbfilename, O_RDWR|O_CREAT, 0666, $DB_HASH ) or
die "Cannot create the parameter database $dbfilename: \n$!\n";
# Open Genesis file
open GFILE, "<$param_file"
or die "Fatal: Cannot open $param_file for reading.\n";
# Read the first line (useless)
$_ = <GFILE>;
die "Cannot read number of rows and parameters from file $param_file.\n"
unless (/(\d+)\s+(\d+)/);
my $num_rows = $1;
my $num_params = $2;
print "$num_rows rows and $num_params parameters in file $param_file. \nReading all available data anyway.\n";
# Loop over all lines
my $row_num = 1;
while (<GFILE>) {
# Save the whole row in the hash bucket
$param_rows{$row_num++} = $_;
}
#Commit to db file
untie %param_rows;
sub usage {
print "Usage: $0 parameter_file\n\n" .
"Creates a parameter database that uses a hash-based \n" .
"access without needing to search all rows. The database would\n" .
"consist of files with .dir and .pag appended the original parameter file name.\n\n";
}