in reply to Re: seeking piped STDIO
in thread seeking piped STDIO

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.

Replies are listed 'Best First'.
Re: Re: seeking piped STDIO
by reyjrar (Hermit) on Nov 16, 2000 at 23:14 UTC
    ... and (4) finding the person responsible for dumping all the file data into a single stream in the first place, and hitting him with an ax...
    I am in awe.. that was beautiful!
    instant ++ here! :)

    -brad..
Re: Re: seeking piped STDIO
by timurFriedman (Initiate) on Nov 16, 2000 at 23:36 UTC
    This solves my problem! Tying, though a bit laborious, looks to be a very clean solution. I believe it will solve another problem as well, which is that the subroutines expect an eof. The tied filehandle could supply that when it detects the start of the next file.

    Suggestion (4) is also intruiging. :)