In that case I can think of two things to do.
1. Use a tied filehandle. The tied object will contain the line
you already read, and the real filehandle. Pass the
tied filehandle to the subroutine. When the subroutine
tries to read the tied filehandle the first time,
give it the line you already read. After that, give it
data out of the real filehandle.
2. Read all the data from standard input and
save it to a temporary file, or several temporary files.
Then use seek on the temporary file.
Solutions 'outside the box' would include (3) redesigning the stupid subroutines
that require a filehandle argument instead of a string argument,
and (4) finding the person responsible for dumping
all the file data insto a single stream in the first place,
and hitting him with an ax.
|