Beefy Boxes and Bandwidth Generously Provided by pair Networks
go ahead... be a heretic

Random accessing a gzip file

by anmol.itbhu (Initiate)
on Oct 16, 2012 at 20:18 UTC ( #999418=perlquestion: print w/replies, xml ) Need Help??
anmol.itbhu has asked for the wisdom of the Perl Monks concerning the following question:


I want to fetch few lines from the gzip file (of size 1 GB). since file contains lots of data so i have somehow found the start and end byte of the lines which i want to fetch from the file. please suggest how can i randomly access a gzip file when i know the start byte of the line to be fetched..
Is it possible through IO::Uncompress::Gunzip module?
Can it be done using file handling function like seek and tell?

Replies are listed 'Best First'.
Re: Random accessing a gzip file
by grondilu (Friar) on Oct 17, 2012 at 01:05 UTC

    From the manual page of IO::Uncompress::Gunzip, I read:

    $z->seek($position, $whence); seek($z, $position, $whence);
    Provides a sub-set of the "seek" functionality, with the restriction that it is only legal to seek forward in the input file/buffer. It is a fatal error to attempt to seek backward.
    Usage is
    $z->tell() tell $z
    Returns the uncompressed file offset.

    So yes, you can, but of course it can not be as easy as with an uncompressed file.

      Note that the implementation of seek in IO::Uncompress::Gunzip does not provide true random access to a compressed file. It works by uncompressing data from the current offset in the file/buffer until it reaches the ucompressed offset specified in the parameters to seek. For very small files this may be acceptable behaviour. For large files it may cause an unacceptable delay.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: perlquestion [id://999418]
Approved by toolic
Front-paged by MidLifeXis
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (7)
As of 2018-06-25 10:54 GMT
Find Nodes?
    Voting Booth?
    Should cpanminus be part of the standard Perl release?

    Results (126 votes). Check out past polls.