open(IN, $oneper) or die "Can't open file $oneper for reading: $!\n"; open(INDEX, ">:raw","$file.idx") or die "Can't open $file.idx for read/write: $!\n"; syswrite INDEX, pack('N',0),4; while () { syswrite INDEX, pack('N', tell INDEX), 4; } close INDEX; #### open INDEX, "<:raw","$index" or die "Can't open $index for reading: $!"; my $len = -s( INDEX ); sysread INDEX, my( $idx ), $len; close INDEX; open FILE, "<$oneper" or die "Can't open $oneper for reading: $!"; foreach my $lineNum (sort {$a cmp $b} keys %todo) { my $offset = unpack 'N', substr $idx, $lineNum * 4, 4; print "offset is $offset for linenum $lineNum\n
"; seek FILE, $offset, 0; my $line = ; print "found line $line\n"; }