Beefy Boxes and Bandwidth Generously Provided by pair Networks
Clear questions and runnable code
get the best and fastest answer

Re: Compress::Zlib : what to do with the "in memory" data ?

by spq (Friar)
on Jan 07, 2005 at 17:31 UTC ( #420319=note: print w/replies, xml ) Need Help??

in reply to Compress::Zlib : what to do with the "in memory" data ?

I use Compress::Zlib for a number of in-memeory (un)compressions. I don't have any examples on hand for generating a file (I store to a database), but I did do that in tests to be sure the compressed data in the db could alternately be SELECT'd to a file and uncompressed with gzip.

my $zipped_raw = Compress::Zlib::memGzip($raw_genome); my $raw_genome = Compress::Zlib::memGunzip($zipped_raw);

So if you wanted to compress in memory and save to file based on your example:

$fu = "bla bla bla bla" ; $ba = Compress::Zlib::memGzip( $fu ) ; open FFF, ">ba.txt.gz" or die "$!" ; print FFF $ba; close (FFF) ;

However Compress::Zlib has methods that handle reading and writing gzip files built in.

$gz->gzwrite($buffer) ;

Which you may want to look at first if that's all your after.


Replies are listed 'Best First'.
Re^2: Compress::Zlib : what to do with the "in memory" data ?
by ZlR (Chaplain) on Jan 07, 2005 at 20:13 UTC
    Thanks a lot for you answer, gzwrite is interesting :
    open FFF, "<fu.txt" or die "$!" ; binmode FFF ; $gz = gzopen("fu.txt.gz", "wb") or die "gzerror" ; while ($buffer = <FFF>) { $gz->gzwrite($buffer) } close FFF ; $gz -> gzclose ;
    The resulting file is a valid gz file.
    I have to point out that i'm under win32, hence the binmode (otherwise newlines are washed out when i uncompress the file).

    But, i have a problem here : what i need to obtain is a .Z file and not a .gz .
    This might not be mandatory, but the resulting file is sent to someone else and i'll have to check if his programs can deal with a .gz .

    Do you know if Compress::Zlib will allow me to create a .Z file ? For exemple with inflate / deflate ? Or is zlib for gz compression only ?

    Thanks a lot,

    ZlR .

      Compress::Zlib and the underlying zlib library do not read or write .Z files. These are the files from the compress program, compressed using the once-patented LZW algorithm. zlib only does deflate, the algorithm used in gzip and zip files.

      AFAIK, there are no Perl modules for reading or writing .Z files. One option would be to pipe through zcat or gzip, which can read .Z files.

      Why do you want to use .Z files? .gz has better compression and is probably more widely supported now.

        Well , a .Z file is expected by some other scripts, which i do not control.
        I think "compress" was chosen because gzip was not available as a standard command on some unices.

        Update: Since Z compressed files can be opened by gzip, the scripts i communicate with will be able to use gunzip instead of compress , wich will allow them to read both .gz and .Z files.
        And i won't have to use a system call :)

        One more update: Since i also need to tar file with Archive::Tar I finally used the compression option this module provides, which creates a tar.gz . e.g :

        $objTar->write($myfile.tar.gz,1) ;
        Thx for your answers !

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://420319]
and all is quiet...

How do I use this? | Other CB clients
Other Users?
Others wandering the Monastery: (3)
As of 2018-02-19 22:44 GMT
Find Nodes?
    Voting Booth?
    When it is dark outside I am happiest to see ...

    Results (266 votes). Check out past polls.