Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:
Hi, Question: Can I have perl automatically buffer/store some amount of input from a gzip pipe so that I can "rewind" some small amount using tell then seek? Alternately, can I "push" a few lines back into the pipe? Hoping not to have to completely restructure my code to read zipped files. I have large < 5G input files, so I want to read only one-pass with small rewinds. I need to pre-fetch some keywords in each section to properly build a data structure. The position of the keywords can be anywhere within the section. AT this size reading the zipped version of a file is greatly preferred.
Suggestions?EX: ... open(LIBIN, "gunzip -c $read_file |") or die "\nERROR: ..."; ... while($line = <LIBIN>) { $self->{LINENUMBER}++; $file_line_location{$self->{LINENUMBER}} = tell LIBIN; ..... # Return to the start of a section after pre-parsing seek LIBIN , $file_line_location{$section_reentry_line}, 0; .... }
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re: buffering zipped pipes (Tie::Handle)
by tye (Sage) on Oct 04, 2016 at 02:38 UTC | |
|
Re: buffering zipped pipes
by BrowserUk (Patriarch) on Oct 04, 2016 at 08:07 UTC | |
|
Re: buffering zipped pipes
by RonW (Parson) on Oct 04, 2016 at 18:36 UTC | |
|
Re: buffering zipped pipes
by Anonymous Monk on Oct 04, 2016 at 14:46 UTC | |
|
Re: buffering zipped pipes
by Anonymous Monk on Oct 04, 2016 at 22:51 UTC |