On Wed, May 28, 2003 at 10:07:39PM -0400, Dale Lancaster wrote: > For the perl hash, I would key the hash on the combo of planet and date, > something like: > > my %Planets = ( > > jupiter => { > "1900-01-01" => ( "5h 39m 18s", "+22o > 4.0'", 28.922, -15,128, -164.799, "set"), > "1900-01-02" => ( "5h 39m 18s", "+22o > 4.0'", 28.922, -15,128, -164.799, "set"), > }, > > neptune => { > "1900-01-01" => ( "5h 39m 18s", "+22o > 4.0'", 28.922, -15,128, -164.799, "set"), > "1900-01-02" => ( "5h 39m 18s", "+22o > 4.0'", 28.922, -15,128, -164.799, "set"), > }, > ) ;
my $Planets = { jupiter => { 1900 => { 01 => { 01 => 1, # Record number in a file 02 => 2, }. 02 => { ...}, .... This would not require the entire dataset to be stored in memory but rather an offset to a file possition which could be randomly accessed. However If I ever heard of a case for use of a fixed width ascii file using spacing records this is it. If you had one file per planet and assuming that you wanted to start on 1900-01-01 my $record_width=90; my $offset = (($year-1900)*372+(($month-1)*31)+($day-1))*$record_width; # 1900-01-01 would be offset 0 # 2003-06-13 would be offset 3463560 This format would require blank records inserted for 1900-02-30 etc. but a simple script could auto generate the file. One advantage of this would be the OS would file cache the read only file. Just my toughts, hope it helps. Paddy