use Sys::Mmap; use constant BDfname=>"bigdatafile"; use constant BD_RECORDSIZE=>9876; -s BDfname % BD_RECORDSIZE and die"size ne mult of recsize"; open BIGDATA, BDfname or die $!; mmap( $BD, -s BDfname, PROT_READ, MAP_SHARED, BIGDATA ); sub BDrec($){ substr($BD,BD_RECORDSIZE*$_[0],BD_RECORDSIZE) }