use IO::Uncompress::Gunzip; use IO::Compress::Gzip; my $gzfile = shift; open my $fh, $gzfile or die "$gzfile: $!\n"; my $buf = do { local $/; <$fh> }; my ($p1, $p2) = unpack("a4096a*", $buf); my $ugz = IO::Uncompress::Gunzip->new(\$p1); $ugz->read(my $gbuf); $ugz->close; $gbuf =~ s/.*?(?=^[^%\n])//ms; my $cgz = IO::Compress::Gzip->new(\ my $z, -Level => 9); $cgz->syswrite($gbuf); $cgz->close; syswrite STDOUT, $z; syswrite STDOUT, $p2;