in reply to Displaying records from a flat file?
and to use it:open(IDX, "> index") or die; open(DAT, "< datafile") or die; $pos = 0; do { printf IDX "%8d" $pos; $line = <DAT>; $pos = tell(DAT); } while (defined $line); close(IDX); close(DAT);
The DB_RECNO interface from DB_File is certainly easier to use, but it's probably not as efficient as it can't keep the index on disk as my code here does.open(IDX, "< index") or die; open(DAT, "< datafile") or die; # assume $lnum is the line number to go to seek(IDX, 8*$lnum, 0) or die; read(IDX, $offset, 8) or die; seek(DAT, $offset, 0) or die; # now DAT filehandle is positioned to read the # record you wanted
Hope this gives you some pointers.
Nat
|
|---|