The code I use and so have just lying about is:

use strict; BEGIN { @ARGV= map { glob($_) } @ARGV } use Compress::Zlib; die "Usage: $0 {file.gz|outfile=infile} ...\n" unless @ARGV ; foreach my $infile (@ARGV) { my $outfile= $infile; if( $infile =~ /=/ ) { ( $outfile, $infile )= split /=/, $infile; } elsif( $outfile !~ s/[._]gz$//i ) { $infile .= ".gz"; } my $gz= gzopen( $infile, "rb" ) or die "Cannot open $infile: $gzerrno\n"; open( OUT, "> $outfile\0" ) or die "Can't write $outfile: $!\n"; binmode(OUT); my $buffer; print OUT $buffer while $gz->gzread($buffer) > 0; die "Error reading from $infile: $gzerrno\n" if $gzerrno != Z_STREAM_END; $gz->gzclose(); close(OUT) or warn "Error closing $outfile: $!\n"; }

where the BEGIN line is there to compensate for stupid mistakes in the construction of Win32 back a decade or so that we are still paying for and the unusual usage is to allow me to unzip several files to non-default locations with a single command. Note that it doesn't delete the *.gz file after unzipping, since I usually find that I instead want to delete the uncompressed file after I've extracted what I needed from it (and I want to keep the compressed file around in case I need to extract more stuff later).

- tye        


In reply to Re: How to Unzip *.gz files (code) by tye
in thread How to Unzip *.gz files by vegasjoe

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.