in reply to read lines... wait, back up?

You could use a hash to hold the tell() positions of the lines in the file. We use a hash instead of an array, because we don't want to HAVE to hold 10,000 elements just to have $array9999.
open FILE, "file" or die "can't open file: $!"; $position{1} = 0; while (<FILE>) { # $. holds line number of file being read from $position{$.+1} = tell(FILE); # record byte offset # do stuff with $_ # access a previous line by doing: if (CONDITION) { seek FILE, $position{$LINE_NUMBER}, 0; $data = <FILE>; # ... # when done, get back to where you were seek FILE, $position{$.+1}, 0; } } close FILE;
Incidentally, dlc, unshift() requires an explicit list of expressions to prepend to an array, and does not default to prepending $_. -- Jeff Pinyan, japhy@pobox.com http://www.pobox.com/~japhy/