Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re: Persistence of a filehandle for a large file with varying formats

by pmqs (Monk)
on Jan 25, 2013 at 13:39 UTC ( #1015349=note: print w/ replies, xml ) Need Help??


in reply to Persistence of a filehandle for a large file with varying formats

IO::Uncompress::Gunzip gives you a filehandle interface to a gzip file

my $fh = new IO::Uncompress::Gunzip "input file", or die "Cannot open file ..." ; my $line = <$fh> ;
It also has the ability to assume the input file is uncompressed if the input data isn't a gzipped at all. To enable that mode just give it the Transparent option like this
my $fh = new IO::Uncompress::Gunzip "input file", Transparent => 1 or die "Cannot open file ..." ; my $line = <$fh> ;

That will give you a filehandle that can read from either a gzip compressed file or uncompressed input file.

One limitation of IO::Uncompress::Gunzip is that it doesn't allow you to seek backwards in a file. If you have a requirement to be able to rewind the input file you will have to reopen the file again. Perhaps something like this (untested)

sub rewind { $_[0]->close(); $_[0] = new new IO::Uncompress::Gunzip $_[1], Transparent => 1 or die "Cannot open file ..." ; } rewind($fh, "somefile");


Comment on Re: Persistence of a filehandle for a large file with varying formats
Select or Download Code
Replies are listed 'Best First'.
Re^2: Persistence of a filehandle for a large file with varying formats
by seaver (Pilgrim) on Jan 25, 2013 at 17:31 UTC

    Well there you have it, a straight forward answer, I'll test this now. Thank you!

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1015349]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (6)
As of 2015-07-30 23:44 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (273 votes), past polls