Debian lenny version packages
[pkg-perl] / deb-src / libio-compress-zlib-perl / libio-compress-zlib-perl-2.012 / lib / IO / Compress / Deflate.pm
1 package IO::Compress::Deflate ;
2
3 use strict ;
4 use warnings;
5 use bytes;
6
7 require Exporter ;
8
9 use IO::Compress::RawDeflate 2.012 ;
10
11 use Compress::Raw::Zlib  2.012 ;
12 use IO::Compress::Zlib::Constants 2.012 ;
13 use IO::Compress::Base::Common  2.012 qw(createSelfTiedObject);
14
15
16 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $DeflateError);
17
18 $VERSION = '2.012';
19 $DeflateError = '';
20
21 @ISA    = qw(Exporter IO::Compress::RawDeflate);
22 @EXPORT_OK = qw( $DeflateError deflate ) ;
23 %EXPORT_TAGS = %IO::Compress::RawDeflate::DEFLATE_CONSTANTS ;
24 push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
25 Exporter::export_ok_tags('all');
26
27
28 sub new
29 {
30     my $class = shift ;
31
32     my $obj = createSelfTiedObject($class, \$DeflateError);
33     return $obj->_create(undef, @_);
34 }
35
36 sub deflate
37 {
38     my $obj = createSelfTiedObject(undef, \$DeflateError);
39     return $obj->_def(@_);
40 }
41
42
43 sub bitmask($$$$)
44 {
45     my $into  = shift ;
46     my $value  = shift ;
47     my $offset = shift ;
48     my $mask   = shift ;
49
50     return $into | (($value & $mask) << $offset ) ;
51 }
52
53 sub mkDeflateHdr($$$;$)
54 {
55     my $method = shift ;
56     my $cinfo  = shift;
57     my $level  = shift;
58     my $fdict_adler = shift  ;
59
60     my $cmf = 0;
61     my $flg = 0;
62     my $fdict = 0;
63     $fdict = 1 if defined $fdict_adler;
64
65     $cmf = bitmask($cmf, $method, ZLIB_CMF_CM_OFFSET,    ZLIB_CMF_CM_BITS);
66     $cmf = bitmask($cmf, $cinfo,  ZLIB_CMF_CINFO_OFFSET, ZLIB_CMF_CINFO_BITS);
67
68     $flg = bitmask($flg, $fdict,  ZLIB_FLG_FDICT_OFFSET, ZLIB_FLG_FDICT_BITS);
69     $flg = bitmask($flg, $level,  ZLIB_FLG_LEVEL_OFFSET, ZLIB_FLG_LEVEL_BITS);
70
71     my $fcheck = 31 - ($cmf * 256 + $flg) % 31 ;
72     $flg = bitmask($flg, $fcheck, ZLIB_FLG_FCHECK_OFFSET, ZLIB_FLG_FCHECK_BITS);
73
74     my $hdr =  pack("CC", $cmf, $flg) ;
75     $hdr .= pack("N", $fdict_adler) if $fdict ;
76
77     return $hdr;
78 }
79
80 sub mkHeader 
81 {
82     my $self = shift ;
83     my $param = shift ;
84
85     my $level = $param->value('Level');
86     my $strategy = $param->value('Strategy');
87
88     my $lflag ;
89     $level = 6 
90         if $level == Z_DEFAULT_COMPRESSION ;
91
92     if (ZLIB_VERNUM >= 0x1210)
93     {
94         if ($strategy >= Z_HUFFMAN_ONLY || $level < 2)
95          {  $lflag = ZLIB_FLG_LEVEL_FASTEST }
96         elsif ($level < 6)
97          {  $lflag = ZLIB_FLG_LEVEL_FAST }
98         elsif ($level == 6)
99          {  $lflag = ZLIB_FLG_LEVEL_DEFAULT }
100         else
101          {  $lflag = ZLIB_FLG_LEVEL_SLOWEST }
102     }
103     else
104     {
105         $lflag = ($level - 1) >> 1 ;
106         $lflag = 3 if $lflag > 3 ;
107     }
108
109      #my $wbits = (MAX_WBITS - 8) << 4 ;
110     my $wbits = 7;
111     mkDeflateHdr(ZLIB_CMF_CM_DEFLATED, $wbits, $lflag);
112 }
113
114 sub ckParams
115 {
116     my $self = shift ;
117     my $got = shift;
118     
119     $got->value('ADLER32' => 1);
120     return 1 ;
121 }
122
123
124 sub mkTrailer
125 {
126     my $self = shift ;
127     return pack("N", *$self->{Compress}->adler32()) ;
128 }
129
130 sub mkFinalTrailer
131 {
132     return '';
133 }
134
135 #sub newHeader
136 #{
137 #    my $self = shift ;
138 #    return *$self->{Header};
139 #}
140
141 sub getExtraParams
142 {
143     my $self = shift ;
144     return $self->getZlibParams(),
145 }
146
147 sub getInverseClass
148 {
149     return ('IO::Uncompress::Inflate',
150                 \$IO::Uncompress::Inflate::InflateError);
151 }
152
153 sub getFileInfo
154 {
155     my $self = shift ;
156     my $params = shift;
157     my $file = shift ;
158     
159 }
160
161
162
163 1;
164
165 __END__
166
167 =head1 NAME
168
169 IO::Compress::Deflate - Write RFC 1950 files/buffers
170  
171  
172
173 =head1 SYNOPSIS
174
175     use IO::Compress::Deflate qw(deflate $DeflateError) ;
176
177     my $status = deflate $input => $output [,OPTS] 
178         or die "deflate failed: $DeflateError\n";
179
180     my $z = new IO::Compress::Deflate $output [,OPTS]
181         or die "deflate failed: $DeflateError\n";
182
183     $z->print($string);
184     $z->printf($format, $string);
185     $z->write($string);
186     $z->syswrite($string [, $length, $offset]);
187     $z->flush();
188     $z->tell();
189     $z->eof();
190     $z->seek($position, $whence);
191     $z->binmode();
192     $z->fileno();
193     $z->opened();
194     $z->autoflush();
195     $z->input_line_number();
196     $z->newStream( [OPTS] );
197     
198     $z->deflateParams();
199     
200     $z->close() ;
201
202     $DeflateError ;
203
204     # IO::File mode
205
206     print $z $string;
207     printf $z $format, $string;
208     tell $z
209     eof $z
210     seek $z, $position, $whence
211     binmode $z
212     fileno $z
213     close $z ;
214     
215
216 =head1 DESCRIPTION
217
218 This module provides a Perl interface that allows writing compressed
219 data to files or buffer as defined in RFC 1950.
220
221 For reading RFC 1950 files/buffers, see the companion module 
222 L<IO::Uncompress::Inflate|IO::Uncompress::Inflate>.
223
224 =head1 Functional Interface
225
226 A top-level function, C<deflate>, is provided to carry out
227 "one-shot" compression between buffers and/or files. For finer
228 control over the compression process, see the L</"OO Interface">
229 section.
230
231     use IO::Compress::Deflate qw(deflate $DeflateError) ;
232
233     deflate $input => $output [,OPTS] 
234         or die "deflate failed: $DeflateError\n";
235
236 The functional interface needs Perl5.005 or better.
237
238 =head2 deflate $input => $output [, OPTS]
239
240 C<deflate> expects at least two parameters, C<$input> and C<$output>.
241
242 =head3 The C<$input> parameter
243
244 The parameter, C<$input>, is used to define the source of
245 the uncompressed data. 
246
247 It can take one of the following forms:
248
249 =over 5
250
251 =item A filename
252
253 If the C<$input> parameter is a simple scalar, it is assumed to be a
254 filename. This file will be opened for reading and the input data
255 will be read from it.
256
257 =item A filehandle
258
259 If the C<$input> parameter is a filehandle, the input data will be
260 read from it.
261 The string '-' can be used as an alias for standard input.
262
263 =item A scalar reference 
264
265 If C<$input> is a scalar reference, the input data will be read
266 from C<$$input>.
267
268 =item An array reference 
269
270 If C<$input> is an array reference, each element in the array must be a
271 filename.
272
273 The input data will be read from each file in turn. 
274
275 The complete array will be walked to ensure that it only
276 contains valid filenames before any data is compressed.
277
278 =item An Input FileGlob string
279
280 If C<$input> is a string that is delimited by the characters "<" and ">"
281 C<deflate> will assume that it is an I<input fileglob string>. The
282 input is the list of files that match the fileglob.
283
284 If the fileglob does not match any files ...
285
286 See L<File::GlobMapper|File::GlobMapper> for more details.
287
288 =back
289
290 If the C<$input> parameter is any other type, C<undef> will be returned.
291
292 =head3 The C<$output> parameter
293
294 The parameter C<$output> is used to control the destination of the
295 compressed data. This parameter can take one of these forms.
296
297 =over 5
298
299 =item A filename
300
301 If the C<$output> parameter is a simple scalar, it is assumed to be a
302 filename.  This file will be opened for writing and the compressed
303 data will be written to it.
304
305 =item A filehandle
306
307 If the C<$output> parameter is a filehandle, the compressed data
308 will be written to it.
309 The string '-' can be used as an alias for standard output.
310
311 =item A scalar reference 
312
313 If C<$output> is a scalar reference, the compressed data will be
314 stored in C<$$output>.
315
316 =item An Array Reference
317
318 If C<$output> is an array reference, the compressed data will be
319 pushed onto the array.
320
321 =item An Output FileGlob
322
323 If C<$output> is a string that is delimited by the characters "<" and ">"
324 C<deflate> will assume that it is an I<output fileglob string>. The
325 output is the list of files that match the fileglob.
326
327 When C<$output> is an fileglob string, C<$input> must also be a fileglob
328 string. Anything else is an error.
329
330 =back
331
332 If the C<$output> parameter is any other type, C<undef> will be returned.
333
334 =head2 Notes
335
336 When C<$input> maps to multiple files/buffers and C<$output> is a single
337 file/buffer the input files/buffers will be stored
338 in C<$output> as a concatenated series of compressed data streams.
339
340 =head2 Optional Parameters
341
342 Unless specified below, the optional parameters for C<deflate>,
343 C<OPTS>, are the same as those used with the OO interface defined in the
344 L</"Constructor Options"> section below.
345
346 =over 5
347
348 =item C<< AutoClose => 0|1 >>
349
350 This option applies to any input or output data streams to 
351 C<deflate> that are filehandles.
352
353 If C<AutoClose> is specified, and the value is true, it will result in all
354 input and/or output filehandles being closed once C<deflate> has
355 completed.
356
357 This parameter defaults to 0.
358
359 =item C<< BinModeIn => 0|1 >>
360
361 When reading from a file or filehandle, set C<binmode> before reading.
362
363 Defaults to 0.
364
365 =item C<< Append => 0|1 >>
366
367 TODO
368
369 =back
370
371 =head2 Examples
372
373 To read the contents of the file C<file1.txt> and write the compressed
374 data to the file C<file1.txt.1950>.
375
376     use strict ;
377     use warnings ;
378     use IO::Compress::Deflate qw(deflate $DeflateError) ;
379
380     my $input = "file1.txt";
381     deflate $input => "$input.1950"
382         or die "deflate failed: $DeflateError\n";
383
384 To read from an existing Perl filehandle, C<$input>, and write the
385 compressed data to a buffer, C<$buffer>.
386
387     use strict ;
388     use warnings ;
389     use IO::Compress::Deflate qw(deflate $DeflateError) ;
390     use IO::File ;
391
392     my $input = new IO::File "<file1.txt"
393         or die "Cannot open 'file1.txt': $!\n" ;
394     my $buffer ;
395     deflate $input => \$buffer 
396         or die "deflate failed: $DeflateError\n";
397
398 To compress all files in the directory "/my/home" that match "*.txt"
399 and store the compressed data in the same directory
400
401     use strict ;
402     use warnings ;
403     use IO::Compress::Deflate qw(deflate $DeflateError) ;
404
405     deflate '</my/home/*.txt>' => '<*.1950>'
406         or die "deflate failed: $DeflateError\n";
407
408 and if you want to compress each file one at a time, this will do the trick
409
410     use strict ;
411     use warnings ;
412     use IO::Compress::Deflate qw(deflate $DeflateError) ;
413
414     for my $input ( glob "/my/home/*.txt" )
415     {
416         my $output = "$input.1950" ;
417         deflate $input => $output 
418             or die "Error compressing '$input': $DeflateError\n";
419     }
420
421 =head1 OO Interface
422
423 =head2 Constructor
424
425 The format of the constructor for C<IO::Compress::Deflate> is shown below
426
427     my $z = new IO::Compress::Deflate $output [,OPTS]
428         or die "IO::Compress::Deflate failed: $DeflateError\n";
429
430 It returns an C<IO::Compress::Deflate> object on success and undef on failure. 
431 The variable C<$DeflateError> will contain an error message on failure.
432
433 If you are running Perl 5.005 or better the object, C<$z>, returned from 
434 IO::Compress::Deflate can be used exactly like an L<IO::File|IO::File> filehandle. 
435 This means that all normal output file operations can be carried out 
436 with C<$z>. 
437 For example, to write to a compressed file/buffer you can use either of 
438 these forms
439
440     $z->print("hello world\n");
441     print $z "hello world\n";
442
443 The mandatory parameter C<$output> is used to control the destination
444 of the compressed data. This parameter can take one of these forms.
445
446 =over 5
447
448 =item A filename
449
450 If the C<$output> parameter is a simple scalar, it is assumed to be a
451 filename. This file will be opened for writing and the compressed data
452 will be written to it.
453
454 =item A filehandle
455
456 If the C<$output> parameter is a filehandle, the compressed data will be
457 written to it.
458 The string '-' can be used as an alias for standard output.
459
460 =item A scalar reference 
461
462 If C<$output> is a scalar reference, the compressed data will be stored
463 in C<$$output>.
464
465 =back
466
467 If the C<$output> parameter is any other type, C<IO::Compress::Deflate>::new will
468 return undef.
469
470 =head2 Constructor Options
471
472 C<OPTS> is any combination of the following options:
473
474 =over 5
475
476 =item C<< AutoClose => 0|1 >>
477
478 This option is only valid when the C<$output> parameter is a filehandle. If
479 specified, and the value is true, it will result in the C<$output> being
480 closed once either the C<close> method is called or the C<IO::Compress::Deflate>
481 object is destroyed.
482
483 This parameter defaults to 0.
484
485 =item C<< Append => 0|1 >>
486
487 Opens C<$output> in append mode. 
488
489 The behaviour of this option is dependent on the type of C<$output>.
490
491 =over 5
492
493 =item * A Buffer
494
495 If C<$output> is a buffer and C<Append> is enabled, all compressed data
496 will be append to the end if C<$output>. Otherwise C<$output> will be
497 cleared before any data is written to it.
498
499 =item * A Filename
500
501 If C<$output> is a filename and C<Append> is enabled, the file will be
502 opened in append mode. Otherwise the contents of the file, if any, will be
503 truncated before any compressed data is written to it.
504
505 =item * A Filehandle
506
507 If C<$output> is a filehandle, the file pointer will be positioned to the
508 end of the file via a call to C<seek> before any compressed data is written
509 to it.  Otherwise the file pointer will not be moved.
510
511 =back
512
513 This parameter defaults to 0.
514
515 =item C<< Merge => 0|1 >>
516
517 This option is used to compress input data and append it to an existing
518 compressed data stream in C<$output>. The end result is a single compressed
519 data stream stored in C<$output>. 
520
521 It is a fatal error to attempt to use this option when C<$output> is not an
522 RFC 1950 data stream.
523
524 There are a number of other limitations with the C<Merge> option:
525
526 =over 5 
527
528 =item 1
529
530 This module needs to have been built with zlib 1.2.1 or better to work. A
531 fatal error will be thrown if C<Merge> is used with an older version of
532 zlib.  
533
534 =item 2
535
536 If C<$output> is a file or a filehandle, it must be seekable.
537
538 =back
539
540 This parameter defaults to 0.
541
542 =item -Level 
543
544 Defines the compression level used by zlib. The value should either be
545 a number between 0 and 9 (0 means no compression and 9 is maximum
546 compression), or one of the symbolic constants defined below.
547
548    Z_NO_COMPRESSION
549    Z_BEST_SPEED
550    Z_BEST_COMPRESSION
551    Z_DEFAULT_COMPRESSION
552
553 The default is Z_DEFAULT_COMPRESSION.
554
555 Note, these constants are not imported by C<IO::Compress::Deflate> by default.
556
557     use IO::Compress::Deflate qw(:strategy);
558     use IO::Compress::Deflate qw(:constants);
559     use IO::Compress::Deflate qw(:all);
560
561 =item -Strategy 
562
563 Defines the strategy used to tune the compression. Use one of the symbolic
564 constants defined below.
565
566    Z_FILTERED
567    Z_HUFFMAN_ONLY
568    Z_RLE
569    Z_FIXED
570    Z_DEFAULT_STRATEGY
571
572 The default is Z_DEFAULT_STRATEGY.
573
574 =item C<< Strict => 0|1 >>
575
576 This is a placeholder option.
577
578 =back
579
580 =head2 Examples
581
582 TODO
583
584 =head1 Methods 
585
586 =head2 print
587
588 Usage is
589
590     $z->print($data)
591     print $z $data
592
593 Compresses and outputs the contents of the C<$data> parameter. This
594 has the same behaviour as the C<print> built-in.
595
596 Returns true if successful.
597
598 =head2 printf
599
600 Usage is
601
602     $z->printf($format, $data)
603     printf $z $format, $data
604
605 Compresses and outputs the contents of the C<$data> parameter.
606
607 Returns true if successful.
608
609 =head2 syswrite
610
611 Usage is
612
613     $z->syswrite $data
614     $z->syswrite $data, $length
615     $z->syswrite $data, $length, $offset
616
617 Compresses and outputs the contents of the C<$data> parameter.
618
619 Returns the number of uncompressed bytes written, or C<undef> if
620 unsuccessful.
621
622 =head2 write
623
624 Usage is
625
626     $z->write $data
627     $z->write $data, $length
628     $z->write $data, $length, $offset
629
630 Compresses and outputs the contents of the C<$data> parameter.
631
632 Returns the number of uncompressed bytes written, or C<undef> if
633 unsuccessful.
634
635 =head2 flush
636
637 Usage is
638
639     $z->flush;
640     $z->flush($flush_type);
641
642 Flushes any pending compressed data to the output file/buffer.
643
644 This method takes an optional parameter, C<$flush_type>, that controls
645 how the flushing will be carried out. By default the C<$flush_type>
646 used is C<Z_FINISH>. Other valid values for C<$flush_type> are
647 C<Z_NO_FLUSH>, C<Z_SYNC_FLUSH>, C<Z_FULL_FLUSH> and C<Z_BLOCK>. It is
648 strongly recommended that you only set the C<flush_type> parameter if
649 you fully understand the implications of what it does - overuse of C<flush>
650 can seriously degrade the level of compression achieved. See the C<zlib>
651 documentation for details.
652
653 Returns true on success.
654
655 =head2 tell
656
657 Usage is
658
659     $z->tell()
660     tell $z
661
662 Returns the uncompressed file offset.
663
664 =head2 eof
665
666 Usage is
667
668     $z->eof();
669     eof($z);
670
671 Returns true if the C<close> method has been called.
672
673 =head2 seek
674
675     $z->seek($position, $whence);
676     seek($z, $position, $whence);
677
678 Provides a sub-set of the C<seek> functionality, with the restriction
679 that it is only legal to seek forward in the output file/buffer.
680 It is a fatal error to attempt to seek backward.
681
682 Empty parts of the file/buffer will have NULL (0x00) bytes written to them.
683
684 The C<$whence> parameter takes one the usual values, namely SEEK_SET,
685 SEEK_CUR or SEEK_END.
686
687 Returns 1 on success, 0 on failure.
688
689 =head2 binmode
690
691 Usage is
692
693     $z->binmode
694     binmode $z ;
695
696 This is a noop provided for completeness.
697
698 =head2 opened
699
700     $z->opened()
701
702 Returns true if the object currently refers to a opened file/buffer. 
703
704 =head2 autoflush
705
706     my $prev = $z->autoflush()
707     my $prev = $z->autoflush(EXPR)
708
709 If the C<$z> object is associated with a file or a filehandle, this method
710 returns the current autoflush setting for the underlying filehandle. If
711 C<EXPR> is present, and is non-zero, it will enable flushing after every
712 write/print operation.
713
714 If C<$z> is associated with a buffer, this method has no effect and always
715 returns C<undef>.
716
717 B<Note> that the special variable C<$|> B<cannot> be used to set or
718 retrieve the autoflush setting.
719
720 =head2 input_line_number
721
722     $z->input_line_number()
723     $z->input_line_number(EXPR)
724
725 This method always returns C<undef> when compressing. 
726
727 =head2 fileno
728
729     $z->fileno()
730     fileno($z)
731
732 If the C<$z> object is associated with a file or a filehandle, C<fileno>
733 will return the underlying file descriptor. Once the C<close> method is
734 called C<fileno> will return C<undef>.
735
736 If the C<$z> object is is associated with a buffer, this method will return
737 C<undef>.
738
739 =head2 close
740
741     $z->close() ;
742     close $z ;
743
744 Flushes any pending compressed data and then closes the output file/buffer. 
745
746 For most versions of Perl this method will be automatically invoked if
747 the IO::Compress::Deflate object is destroyed (either explicitly or by the
748 variable with the reference to the object going out of scope). The
749 exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
750 these cases, the C<close> method will be called automatically, but
751 not until global destruction of all live objects when the program is
752 terminating.
753
754 Therefore, if you want your scripts to be able to run on all versions
755 of Perl, you should call C<close> explicitly and not rely on automatic
756 closing.
757
758 Returns true on success, otherwise 0.
759
760 If the C<AutoClose> option has been enabled when the IO::Compress::Deflate
761 object was created, and the object is associated with a file, the
762 underlying file will also be closed.
763
764 =head2 newStream([OPTS])
765
766 Usage is
767
768     $z->newStream( [OPTS] )
769
770 Closes the current compressed data stream and starts a new one.
771
772 OPTS consists of any of the the options that are available when creating
773 the C<$z> object.
774
775 See the L</"Constructor Options"> section for more details.
776
777 =head2 deflateParams
778
779 Usage is
780
781     $z->deflateParams
782
783 TODO
784
785 =head1 Importing 
786
787 A number of symbolic constants are required by some methods in 
788 C<IO::Compress::Deflate>. None are imported by default.
789
790 =over 5
791
792 =item :all
793
794 Imports C<deflate>, C<$DeflateError> and all symbolic
795 constants that can be used by C<IO::Compress::Deflate>. Same as doing this
796
797     use IO::Compress::Deflate qw(deflate $DeflateError :constants) ;
798
799 =item :constants
800
801 Import all symbolic constants. Same as doing this
802
803     use IO::Compress::Deflate qw(:flush :level :strategy) ;
804
805 =item :flush
806
807 These symbolic constants are used by the C<flush> method.
808
809     Z_NO_FLUSH
810     Z_PARTIAL_FLUSH
811     Z_SYNC_FLUSH
812     Z_FULL_FLUSH
813     Z_FINISH
814     Z_BLOCK
815
816 =item :level
817
818 These symbolic constants are used by the C<Level> option in the constructor.
819
820     Z_NO_COMPRESSION
821     Z_BEST_SPEED
822     Z_BEST_COMPRESSION
823     Z_DEFAULT_COMPRESSION
824
825 =item :strategy
826
827 These symbolic constants are used by the C<Strategy> option in the constructor.
828
829     Z_FILTERED
830     Z_HUFFMAN_ONLY
831     Z_RLE
832     Z_FIXED
833     Z_DEFAULT_STRATEGY
834
835     
836     
837
838 =back
839
840 =head1 EXAMPLES
841
842 =head2 Apache::GZip Revisited
843
844 See L<IO::Compress::Zlib::FAQ|IO::Compress::Zlib::FAQ/"Apache::GZip Revisited">
845
846     
847
848 =head2 Working with Net::FTP
849
850 See L<IO::Compress::Zlib::FAQ|IO::Compress::Zlib::FAQ/"Compressed files and Net::FTP">
851
852 =head1 SEE ALSO
853
854 L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Uncompress::Inflate>, L<IO::Compress::RawDeflate>, L<IO::Uncompress::RawInflate>, L<IO::Compress::Bzip2>, L<IO::Uncompress::Bunzip2>, L<IO::Compress::Lzop>, L<IO::Uncompress::UnLzop>, L<IO::Compress::Lzf>, L<IO::Uncompress::UnLzf>, L<IO::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
855
856 L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>
857
858 L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
859 L<Archive::Tar|Archive::Tar>,
860 L<IO::Zlib|IO::Zlib>
861
862 For RFC 1950, 1951 and 1952 see 
863 F<http://www.faqs.org/rfcs/rfc1950.html>,
864 F<http://www.faqs.org/rfcs/rfc1951.html> and
865 F<http://www.faqs.org/rfcs/rfc1952.html>
866
867 The I<zlib> compression library was written by Jean-loup Gailly
868 F<gzip@prep.ai.mit.edu> and Mark Adler F<madler@alumni.caltech.edu>.
869
870 The primary site for the I<zlib> compression library is
871 F<http://www.zlib.org>.
872
873 The primary site for gzip is F<http://www.gzip.org>.
874
875 =head1 AUTHOR
876
877 This module was written by Paul Marquess, F<pmqs@cpan.org>. 
878
879 =head1 MODIFICATION HISTORY
880
881 See the Changes file.
882
883 =head1 COPYRIGHT AND LICENSE
884
885 Copyright (c) 2005-2008 Paul Marquess. All rights reserved.
886
887 This program is free software; you can redistribute it and/or
888 modify it under the same terms as Perl itself.
889