IO::Compress* 2.000_12
[p5sagit/p5-mst-13.2.git] / ext / Compress / IO / Zlib / 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;
10
11 use Compress::Raw::Zlib ;
12 use IO::Compress::Zlib::Constants;
13 use IO::Compress::Base::Common qw(createSelfTiedObject);
14
15
16 our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $DeflateError);
17
18 $VERSION = '2.000_12';
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
170
171 IO::Compress::Deflate - Write RFC 1950 files/buffers
172  
173  
174
175 =head1 SYNOPSIS
176
177     use IO::Compress::Deflate qw(deflate $DeflateError) ;
178
179
180     my $status = deflate $input => $output [,OPTS] 
181         or die "deflate failed: $DeflateError\n";
182
183     my $z = new IO::Compress::Deflate $output [,OPTS]
184         or die "deflate failed: $DeflateError\n";
185
186     $z->print($string);
187     $z->printf($format, $string);
188     $z->write($string);
189     $z->syswrite($string [, $length, $offset]);
190     $z->flush();
191     $z->tell();
192     $z->eof();
193     $z->seek($position, $whence);
194     $z->binmode();
195     $z->fileno();
196     $z->opened();
197     $z->autoflush();
198     $z->input_line_number();
199     $z->newStream( [OPTS] );
200     
201     $z->deflateParams();
202     
203     $z->close() ;
204
205     $DeflateError ;
206
207     # IO::File mode
208
209     print $z $string;
210     printf $z $format, $string;
211     tell $z
212     eof $z
213     seek $z, $position, $whence
214     binmode $z
215     fileno $z
216     close $z ;
217     
218
219 =head1 DESCRIPTION
220
221
222
223 B<WARNING -- This is a Beta release>. 
224
225 =over 5
226
227 =item * DO NOT use in production code.
228
229 =item * The documentation is incomplete in places.
230
231 =item * Parts of the interface defined here are tentative.
232
233 =item * Please report any problems you find.
234
235 =back
236
237
238
239
240 This module provides a Perl interface that allows writing compressed
241 data to files or buffer as defined in RFC 1950.
242
243
244
245
246
247
248
249
250
251 For reading RFC 1950 files/buffers, see the companion module 
252 L<IO::Uncompress::Inflate|IO::Uncompress::Inflate>.
253
254
255 =head1 Functional Interface
256
257 A top-level function, C<deflate>, is provided to carry out
258 "one-shot" compression between buffers and/or files. For finer
259 control over the compression process, see the L</"OO Interface">
260 section.
261
262     use IO::Compress::Deflate qw(deflate $DeflateError) ;
263
264     deflate $input => $output [,OPTS] 
265         or die "deflate failed: $DeflateError\n";
266
267
268
269 The functional interface needs Perl5.005 or better.
270
271
272 =head2 deflate $input => $output [, OPTS]
273
274
275 C<deflate> expects at least two parameters, C<$input> and C<$output>.
276
277 =head3 The C<$input> parameter
278
279 The parameter, C<$input>, is used to define the source of
280 the uncompressed data. 
281
282 It can take one of the following forms:
283
284 =over 5
285
286 =item A filename
287
288 If the C<$input> parameter is a simple scalar, it is assumed to be a
289 filename. This file will be opened for reading and the input data
290 will be read from it.
291
292 =item A filehandle
293
294 If the C<$input> parameter is a filehandle, the input data will be
295 read from it.
296 The string '-' can be used as an alias for standard input.
297
298 =item A scalar reference 
299
300 If C<$input> is a scalar reference, the input data will be read
301 from C<$$input>.
302
303 =item An array reference 
304
305 If C<$input> is an array reference, each element in the array must be a
306 filename.
307
308 The input data will be read from each file in turn. 
309
310 The complete array will be walked to ensure that it only
311 contains valid filenames before any data is compressed.
312
313
314
315 =item An Input FileGlob string
316
317 If C<$input> is a string that is delimited by the characters "<" and ">"
318 C<deflate> will assume that it is an I<input fileglob string>. The
319 input is the list of files that match the fileglob.
320
321 If the fileglob does not match any files ...
322
323 See L<File::GlobMapper|File::GlobMapper> for more details.
324
325
326 =back
327
328 If the C<$input> parameter is any other type, C<undef> will be returned.
329
330
331
332 =head3 The C<$output> parameter
333
334 The parameter C<$output> is used to control the destination of the
335 compressed data. This parameter can take one of these forms.
336
337 =over 5
338
339 =item A filename
340
341 If the C<$output> parameter is a simple scalar, it is assumed to be a
342 filename.  This file will be opened for writing and the compressed
343 data will be written to it.
344
345 =item A filehandle
346
347 If the C<$output> parameter is a filehandle, the compressed data
348 will be written to it.
349 The string '-' can be used as an alias for standard output.
350
351
352 =item A scalar reference 
353
354 If C<$output> is a scalar reference, the compressed data will be
355 stored in C<$$output>.
356
357
358
359 =item An Array Reference
360
361 If C<$output> is an array reference, the compressed data will be
362 pushed onto the array.
363
364 =item An Output FileGlob
365
366 If C<$output> is a string that is delimited by the characters "<" and ">"
367 C<deflate> will assume that it is an I<output fileglob string>. The
368 output is the list of files that match the fileglob.
369
370 When C<$output> is an fileglob string, C<$input> must also be a fileglob
371 string. Anything else is an error.
372
373 =back
374
375 If the C<$output> parameter is any other type, C<undef> will be returned.
376
377
378
379 =head2 Notes
380
381
382
383 When C<$input> maps to multiple files/buffers and C<$output> is a single
384 file/buffer the input files/buffers will be stored
385 in C<$output> as a concatenated series of compressed data streams.
386
387
388
389
390
391
392 =head2 Optional Parameters
393
394 Unless specified below, the optional parameters for C<deflate>,
395 C<OPTS>, are the same as those used with the OO interface defined in the
396 L</"Constructor Options"> section below.
397
398 =over 5
399
400 =item AutoClose =E<gt> 0|1
401
402 This option applies to any input or output data streams to 
403 C<deflate> that are filehandles.
404
405 If C<AutoClose> is specified, and the value is true, it will result in all
406 input and/or output filehandles being closed once C<deflate> has
407 completed.
408
409 This parameter defaults to 0.
410
411
412
413 =item BinModeIn =E<gt> 0|1
414
415 When reading from a file or filehandle, set C<binmode> before reading.
416
417 Defaults to 0.
418
419
420
421
422
423 =item -Append =E<gt> 0|1
424
425 TODO
426
427
428 =back
429
430
431
432 =head2 Examples
433
434 To read the contents of the file C<file1.txt> and write the compressed
435 data to the file C<file1.txt.1950>.
436
437     use strict ;
438     use warnings ;
439     use IO::Compress::Deflate qw(deflate $DeflateError) ;
440
441     my $input = "file1.txt";
442     deflate $input => "$input.1950"
443         or die "deflate failed: $DeflateError\n";
444
445
446 To read from an existing Perl filehandle, C<$input>, and write the
447 compressed data to a buffer, C<$buffer>.
448
449     use strict ;
450     use warnings ;
451     use IO::Compress::Deflate qw(deflate $DeflateError) ;
452     use IO::File ;
453
454     my $input = new IO::File "<file1.txt"
455         or die "Cannot open 'file1.txt': $!\n" ;
456     my $buffer ;
457     deflate $input => \$buffer 
458         or die "deflate failed: $DeflateError\n";
459
460 To compress all files in the directory "/my/home" that match "*.txt"
461 and store the compressed data in the same directory
462
463     use strict ;
464     use warnings ;
465     use IO::Compress::Deflate qw(deflate $DeflateError) ;
466
467     deflate '</my/home/*.txt>' => '<*.1950>'
468         or die "deflate failed: $DeflateError\n";
469
470 and if you want to compress each file one at a time, this will do the trick
471
472     use strict ;
473     use warnings ;
474     use IO::Compress::Deflate qw(deflate $DeflateError) ;
475
476     for my $input ( glob "/my/home/*.txt" )
477     {
478         my $output = "$input.1950" ;
479         deflate $input => $output 
480             or die "Error compressing '$input': $DeflateError\n";
481     }
482
483
484 =head1 OO Interface
485
486 =head2 Constructor
487
488 The format of the constructor for C<IO::Compress::Deflate> is shown below
489
490     my $z = new IO::Compress::Deflate $output [,OPTS]
491         or die "IO::Compress::Deflate failed: $DeflateError\n";
492
493 It returns an C<IO::Compress::Deflate> object on success and undef on failure. 
494 The variable C<$DeflateError> will contain an error message on failure.
495
496 If you are running Perl 5.005 or better the object, C<$z>, returned from 
497 IO::Compress::Deflate can be used exactly like an L<IO::File|IO::File> filehandle. 
498 This means that all normal output file operations can be carried out 
499 with C<$z>. 
500 For example, to write to a compressed file/buffer you can use either of 
501 these forms
502
503     $z->print("hello world\n");
504     print $z "hello world\n";
505
506 The mandatory parameter C<$output> is used to control the destination
507 of the compressed data. This parameter can take one of these forms.
508
509 =over 5
510
511 =item A filename
512
513 If the C<$output> parameter is a simple scalar, it is assumed to be a
514 filename. This file will be opened for writing and the compressed data
515 will be written to it.
516
517 =item A filehandle
518
519 If the C<$output> parameter is a filehandle, the compressed data will be
520 written to it.
521 The string '-' can be used as an alias for standard output.
522
523
524 =item A scalar reference 
525
526 If C<$output> is a scalar reference, the compressed data will be stored
527 in C<$$output>.
528
529 =back
530
531 If the C<$output> parameter is any other type, C<IO::Compress::Deflate>::new will
532 return undef.
533
534 =head2 Constructor Options
535
536 C<OPTS> is any combination of the following options:
537
538 =over 5
539
540 =item AutoClose =E<gt> 0|1
541
542 This option is only valid when the C<$output> parameter is a filehandle. If
543 specified, and the value is true, it will result in the C<$output> being
544 closed once either the C<close> method is called or the C<IO::Compress::Deflate>
545 object is destroyed.
546
547 This parameter defaults to 0.
548
549 =item Append =E<gt> 0|1
550
551 Opens C<$output> in append mode. 
552
553 The behaviour of this option is dependent on the type of C<$output>.
554
555 =over 5
556
557 =item * A Buffer
558
559 If C<$output> is a buffer and C<Append> is enabled, all compressed data
560 will be append to the end if C<$output>. Otherwise C<$output> will be
561 cleared before any data is written to it.
562
563 =item * A Filename
564
565 If C<$output> is a filename and C<Append> is enabled, the file will be
566 opened in append mode. Otherwise the contents of the file, if any, will be
567 truncated before any compressed data is written to it.
568
569 =item * A Filehandle
570
571 If C<$output> is a filehandle, the file pointer will be positioned to the
572 end of the file via a call to C<seek> before any compressed data is written
573 to it.  Otherwise the file pointer will not be moved.
574
575 =back
576
577 This parameter defaults to 0.
578
579
580
581
582
583 =item Merge =E<gt> 0|1
584
585 This option is used to compress input data and append it to an existing
586 compressed data stream in C<$output>. The end result is a single compressed
587 data stream stored in C<$output>. 
588
589
590
591 It is a fatal error to attempt to use this option when C<$output> is not an
592 RFC 1950 data stream.
593
594
595
596 There are a number of other limitations with the C<Merge> option:
597
598 =over 5 
599
600 =item 1
601
602 This module needs to have been built with zlib 1.2.1 or better to work. A
603 fatal error will be thrown if C<Merge> is used with an older version of
604 zlib.  
605
606 =item 2
607
608 If C<$output> is a file or a filehandle, it must be seekable.
609
610 =back
611
612
613 This parameter defaults to 0.
614
615
616
617 =item -Level 
618
619 Defines the compression level used by zlib. The value should either be
620 a number between 0 and 9 (0 means no compression and 9 is maximum
621 compression), or one of the symbolic constants defined below.
622
623    Z_NO_COMPRESSION
624    Z_BEST_SPEED
625    Z_BEST_COMPRESSION
626    Z_DEFAULT_COMPRESSION
627
628 The default is Z_DEFAULT_COMPRESSION.
629
630 Note, these constants are not imported by C<IO::Compress::Deflate> by default.
631
632     use IO::Compress::Deflate qw(:strategy);
633     use IO::Compress::Deflate qw(:constants);
634     use IO::Compress::Deflate qw(:all);
635
636 =item -Strategy 
637
638 Defines the strategy used to tune the compression. Use one of the symbolic
639 constants defined below.
640
641    Z_FILTERED
642    Z_HUFFMAN_ONLY
643    Z_RLE
644    Z_FIXED
645    Z_DEFAULT_STRATEGY
646
647 The default is Z_DEFAULT_STRATEGY.
648
649
650
651
652
653
654 =item -Strict =E<gt> 0|1
655
656
657
658 This is a placeholder option.
659
660
661
662 =back
663
664 =head2 Examples
665
666 TODO
667
668 =head1 Methods 
669
670 =head2 print
671
672 Usage is
673
674     $z->print($data)
675     print $z $data
676
677 Compresses and outputs the contents of the C<$data> parameter. This
678 has the same behaviour as the C<print> built-in.
679
680 Returns true if successful.
681
682 =head2 printf
683
684 Usage is
685
686     $z->printf($format, $data)
687     printf $z $format, $data
688
689 Compresses and outputs the contents of the C<$data> parameter.
690
691 Returns true if successful.
692
693 =head2 syswrite
694
695 Usage is
696
697     $z->syswrite $data
698     $z->syswrite $data, $length
699     $z->syswrite $data, $length, $offset
700
701 Compresses and outputs the contents of the C<$data> parameter.
702
703 Returns the number of uncompressed bytes written, or C<undef> if
704 unsuccessful.
705
706 =head2 write
707
708 Usage is
709
710     $z->write $data
711     $z->write $data, $length
712     $z->write $data, $length, $offset
713
714 Compresses and outputs the contents of the C<$data> parameter.
715
716 Returns the number of uncompressed bytes written, or C<undef> if
717 unsuccessful.
718
719 =head2 flush
720
721 Usage is
722
723
724     $z->flush;
725     $z->flush($flush_type);
726
727
728 Flushes any pending compressed data to the output file/buffer.
729
730
731 This method takes an optional parameter, C<$flush_type>, that controls
732 how the flushing will be carried out. By default the C<$flush_type>
733 used is C<Z_FINISH>. Other valid values for C<$flush_type> are
734 C<Z_NO_FLUSH>, C<Z_SYNC_FLUSH>, C<Z_FULL_FLUSH> and C<Z_BLOCK>. It is
735 strongly recommended that you only set the C<flush_type> parameter if
736 you fully understand the implications of what it does - overuse of C<flush>
737 can seriously degrade the level of compression achieved. See the C<zlib>
738 documentation for details.
739
740
741 Returns true on success.
742
743
744 =head2 tell
745
746 Usage is
747
748     $z->tell()
749     tell $z
750
751 Returns the uncompressed file offset.
752
753 =head2 eof
754
755 Usage is
756
757     $z->eof();
758     eof($z);
759
760
761
762 Returns true if the C<close> method has been called.
763
764
765
766 =head2 seek
767
768     $z->seek($position, $whence);
769     seek($z, $position, $whence);
770
771
772
773
774 Provides a sub-set of the C<seek> functionality, with the restriction
775 that it is only legal to seek forward in the output file/buffer.
776 It is a fatal error to attempt to seek backward.
777
778 Empty parts of the file/buffer will have NULL (0x00) bytes written to them.
779
780
781
782 The C<$whence> parameter takes one the usual values, namely SEEK_SET,
783 SEEK_CUR or SEEK_END.
784
785 Returns 1 on success, 0 on failure.
786
787 =head2 binmode
788
789 Usage is
790
791     $z->binmode
792     binmode $z ;
793
794 This is a noop provided for completeness.
795
796 =head2 opened
797
798     $z->opened()
799
800 Returns true if the object currently refers to a opened file/buffer. 
801
802 =head2 autoflush
803
804     my $prev = $z->autoflush()
805     my $prev = $z->autoflush(EXPR)
806
807 If the C<$z> object is associated with a file or a filehandle, this method
808 returns the current autoflush setting for the underlying filehandle. If
809 C<EXPR> is present, and is non-zero, it will enable flushing after every
810 write/print operation.
811
812 If C<$z> is associated with a buffer, this method has no effect and always
813 returns C<undef>.
814
815 B<Note> that the special variable C<$|> B<cannot> be used to set or
816 retrieve the autoflush setting.
817
818 =head2 input_line_number
819
820     $z->input_line_number()
821     $z->input_line_number(EXPR)
822
823
824 This method always returns C<undef> when compressing. 
825
826
827
828 =head2 fileno
829
830     $z->fileno()
831     fileno($z)
832
833 If the C<$z> object is associated with a file or a filehandle, this method
834 will return the underlying file descriptor.
835
836 If the C<$z> object is is associated with a buffer, this method will
837 return undef.
838
839 =head2 close
840
841     $z->close() ;
842     close $z ;
843
844
845
846 Flushes any pending compressed data and then closes the output file/buffer. 
847
848
849
850 For most versions of Perl this method will be automatically invoked if
851 the IO::Compress::Deflate object is destroyed (either explicitly or by the
852 variable with the reference to the object going out of scope). The
853 exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
854 these cases, the C<close> method will be called automatically, but
855 not until global destruction of all live objects when the program is
856 terminating.
857
858 Therefore, if you want your scripts to be able to run on all versions
859 of Perl, you should call C<close> explicitly and not rely on automatic
860 closing.
861
862 Returns true on success, otherwise 0.
863
864 If the C<AutoClose> option has been enabled when the IO::Compress::Deflate
865 object was created, and the object is associated with a file, the
866 underlying file will also be closed.
867
868
869
870
871 =head2 newStream([OPTS])
872
873 Usage is
874
875     $z->newStream( [OPTS] )
876
877 Closes the current compressed data stream and starts a new one.
878
879 OPTS consists of the following sub-set of the the options that are
880 available when creating the C<$z> object,
881
882 =over 5
883
884
885
886 =item * Level
887
888
889
890 =back
891
892
893 =head2 deflateParams
894
895 Usage is
896
897     $z->deflateParams
898
899 TODO
900
901
902 =head1 Importing 
903
904
905 A number of symbolic constants are required by some methods in 
906 C<IO::Compress::Deflate>. None are imported by default.
907
908
909
910 =over 5
911
912 =item :all
913
914
915 Imports C<deflate>, C<$DeflateError> and all symbolic
916 constants that can be used by C<IO::Compress::Deflate>. Same as doing this
917
918     use IO::Compress::Deflate qw(deflate $DeflateError :constants) ;
919
920 =item :constants
921
922 Import all symbolic constants. Same as doing this
923
924
925     use IO::Compress::Deflate qw(:flush :level :strategy) ;
926
927
928 =item :flush
929
930 These symbolic constants are used by the C<flush> method.
931
932     Z_NO_FLUSH
933     Z_PARTIAL_FLUSH
934     Z_SYNC_FLUSH
935     Z_FULL_FLUSH
936     Z_FINISH
937     Z_BLOCK
938
939 =item :level
940
941 These symbolic constants are used by the C<Level> option in the constructor.
942
943     Z_NO_COMPRESSION
944     Z_BEST_SPEED
945     Z_BEST_COMPRESSION
946     Z_DEFAULT_COMPRESSION
947
948
949 =item :strategy
950
951 These symbolic constants are used by the C<Strategy> option in the constructor.
952
953     Z_FILTERED
954     Z_HUFFMAN_ONLY
955     Z_RLE
956     Z_FIXED
957     Z_DEFAULT_STRATEGY
958
959     
960     
961
962 =back
963
964 For 
965
966 =head1 EXAMPLES
967
968 TODO
969
970
971
972
973
974
975 =head1 SEE ALSO
976
977 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::Uncompress::AnyInflate>, L<IO::Uncompress::AnyUncompress>
978
979 L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>
980
981 L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
982 L<Archive::Tar|Archive::Tar>,
983 L<IO::Zlib|IO::Zlib>
984
985
986 For RFC 1950, 1951 and 1952 see 
987 F<http://www.faqs.org/rfcs/rfc1950.html>,
988 F<http://www.faqs.org/rfcs/rfc1951.html> and
989 F<http://www.faqs.org/rfcs/rfc1952.html>
990
991 The I<zlib> compression library was written by Jean-loup Gailly
992 F<gzip@prep.ai.mit.edu> and Mark Adler F<madler@alumni.caltech.edu>.
993
994 The primary site for the I<zlib> compression library is
995 F<http://www.zlib.org>.
996
997 The primary site for gzip is F<http://www.gzip.org>.
998
999
1000
1001
1002 =head1 AUTHOR
1003
1004 This module was written by Paul Marquess, F<pmqs@cpan.org>. 
1005
1006
1007
1008 =head1 MODIFICATION HISTORY
1009
1010 See the Changes file.
1011
1012 =head1 COPYRIGHT AND LICENSE
1013
1014 Copyright (c) 2005-2006 Paul Marquess. All rights reserved.
1015
1016 This program is free software; you can redistribute it and/or
1017 modify it under the same terms as Perl itself.
1018
1019