IO::Compress::*
[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_11';
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 When C<$input> maps to multiple files/buffers and C<$output> is a single
382 file/buffer the compressed input files/buffers will all be stored
383 in C<$output> as a single compressed stream.
384
385
386
387 =head2 Optional Parameters
388
389 Unless specified below, the optional parameters for C<deflate>,
390 C<OPTS>, are the same as those used with the OO interface defined in the
391 L</"Constructor Options"> section below.
392
393 =over 5
394
395 =item AutoClose =E<gt> 0|1
396
397 This option applies to any input or output data streams to 
398 C<deflate> that are filehandles.
399
400 If C<AutoClose> is specified, and the value is true, it will result in all
401 input and/or output filehandles being closed once C<deflate> has
402 completed.
403
404 This parameter defaults to 0.
405
406
407
408 =item BinModeIn =E<gt> 0|1
409
410 When reading from a file or filehandle, set C<binmode> before reading.
411
412 Defaults to 0.
413
414
415
416
417
418 =item -Append =E<gt> 0|1
419
420 TODO
421
422
423 =back
424
425
426
427 =head2 Examples
428
429 To read the contents of the file C<file1.txt> and write the compressed
430 data to the file C<file1.txt.1950>.
431
432     use strict ;
433     use warnings ;
434     use IO::Compress::Deflate qw(deflate $DeflateError) ;
435
436     my $input = "file1.txt";
437     deflate $input => "$input.1950"
438         or die "deflate failed: $DeflateError\n";
439
440
441 To read from an existing Perl filehandle, C<$input>, and write the
442 compressed data to a buffer, C<$buffer>.
443
444     use strict ;
445     use warnings ;
446     use IO::Compress::Deflate qw(deflate $DeflateError) ;
447     use IO::File ;
448
449     my $input = new IO::File "<file1.txt"
450         or die "Cannot open 'file1.txt': $!\n" ;
451     my $buffer ;
452     deflate $input => \$buffer 
453         or die "deflate failed: $DeflateError\n";
454
455 To compress all files in the directory "/my/home" that match "*.txt"
456 and store the compressed data in the same directory
457
458     use strict ;
459     use warnings ;
460     use IO::Compress::Deflate qw(deflate $DeflateError) ;
461
462     deflate '</my/home/*.txt>' => '<*.1950>'
463         or die "deflate failed: $DeflateError\n";
464
465 and if you want to compress each file one at a time, this will do the trick
466
467     use strict ;
468     use warnings ;
469     use IO::Compress::Deflate qw(deflate $DeflateError) ;
470
471     for my $input ( glob "/my/home/*.txt" )
472     {
473         my $output = "$input.1950" ;
474         deflate $input => $output 
475             or die "Error compressing '$input': $DeflateError\n";
476     }
477
478
479 =head1 OO Interface
480
481 =head2 Constructor
482
483 The format of the constructor for C<IO::Compress::Deflate> is shown below
484
485     my $z = new IO::Compress::Deflate $output [,OPTS]
486         or die "IO::Compress::Deflate failed: $DeflateError\n";
487
488 It returns an C<IO::Compress::Deflate> object on success and undef on failure. 
489 The variable C<$DeflateError> will contain an error message on failure.
490
491 If you are running Perl 5.005 or better the object, C<$z>, returned from 
492 IO::Compress::Deflate can be used exactly like an L<IO::File|IO::File> filehandle. 
493 This means that all normal output file operations can be carried out 
494 with C<$z>. 
495 For example, to write to a compressed file/buffer you can use either of 
496 these forms
497
498     $z->print("hello world\n");
499     print $z "hello world\n";
500
501 The mandatory parameter C<$output> is used to control the destination
502 of the compressed data. This parameter can take one of these forms.
503
504 =over 5
505
506 =item A filename
507
508 If the C<$output> parameter is a simple scalar, it is assumed to be a
509 filename. This file will be opened for writing and the compressed data
510 will be written to it.
511
512 =item A filehandle
513
514 If the C<$output> parameter is a filehandle, the compressed data will be
515 written to it.
516 The string '-' can be used as an alias for standard output.
517
518
519 =item A scalar reference 
520
521 If C<$output> is a scalar reference, the compressed data will be stored
522 in C<$$output>.
523
524 =back
525
526 If the C<$output> parameter is any other type, C<IO::Compress::Deflate>::new will
527 return undef.
528
529 =head2 Constructor Options
530
531 C<OPTS> is any combination of the following options:
532
533 =over 5
534
535 =item AutoClose =E<gt> 0|1
536
537 This option is only valid when the C<$output> parameter is a filehandle. If
538 specified, and the value is true, it will result in the C<$output> being
539 closed once either the C<close> method is called or the C<IO::Compress::Deflate>
540 object is destroyed.
541
542 This parameter defaults to 0.
543
544 =item Append =E<gt> 0|1
545
546 Opens C<$output> in append mode. 
547
548 The behaviour of this option is dependent on the type of C<$output>.
549
550 =over 5
551
552 =item * A Buffer
553
554 If C<$output> is a buffer and C<Append> is enabled, all compressed data
555 will be append to the end if C<$output>. Otherwise C<$output> will be
556 cleared before any data is written to it.
557
558 =item * A Filename
559
560 If C<$output> is a filename and C<Append> is enabled, the file will be
561 opened in append mode. Otherwise the contents of the file, if any, will be
562 truncated before any compressed data is written to it.
563
564 =item * A Filehandle
565
566 If C<$output> is a filehandle, the file pointer will be positioned to the
567 end of the file via a call to C<seek> before any compressed data is written
568 to it.  Otherwise the file pointer will not be moved.
569
570 =back
571
572 This parameter defaults to 0.
573
574
575
576
577
578 =item Merge =E<gt> 0|1
579
580 This option is used to compress input data and append it to an existing
581 compressed data stream in C<$output>. The end result is a single compressed
582 data stream stored in C<$output>. 
583
584
585
586 It is a fatal error to attempt to use this option when C<$output> is not an
587 RFC 1950 data stream.
588
589
590
591 There are a number of other limitations with the C<Merge> option:
592
593 =over 5 
594
595 =item 1
596
597 This module needs to have been built with zlib 1.2.1 or better to work. A
598 fatal error will be thrown if C<Merge> is used with an older version of
599 zlib.  
600
601 =item 2
602
603 If C<$output> is a file or a filehandle, it must be seekable.
604
605 =back
606
607
608 This parameter defaults to 0.
609
610
611
612 =item -Level 
613
614 Defines the compression level used by zlib. The value should either be
615 a number between 0 and 9 (0 means no compression and 9 is maximum
616 compression), or one of the symbolic constants defined below.
617
618    Z_NO_COMPRESSION
619    Z_BEST_SPEED
620    Z_BEST_COMPRESSION
621    Z_DEFAULT_COMPRESSION
622
623 The default is Z_DEFAULT_COMPRESSION.
624
625 Note, these constants are not imported by C<IO::Compress::Deflate> by default.
626
627     use IO::Compress::Deflate qw(:strategy);
628     use IO::Compress::Deflate qw(:constants);
629     use IO::Compress::Deflate qw(:all);
630
631 =item -Strategy 
632
633 Defines the strategy used to tune the compression. Use one of the symbolic
634 constants defined below.
635
636    Z_FILTERED
637    Z_HUFFMAN_ONLY
638    Z_RLE
639    Z_FIXED
640    Z_DEFAULT_STRATEGY
641
642 The default is Z_DEFAULT_STRATEGY.
643
644
645
646
647
648
649 =item -Strict =E<gt> 0|1
650
651
652
653 This is a placeholder option.
654
655
656
657 =back
658
659 =head2 Examples
660
661 TODO
662
663 =head1 Methods 
664
665 =head2 print
666
667 Usage is
668
669     $z->print($data)
670     print $z $data
671
672 Compresses and outputs the contents of the C<$data> parameter. This
673 has the same behaviour as the C<print> built-in.
674
675 Returns true if successful.
676
677 =head2 printf
678
679 Usage is
680
681     $z->printf($format, $data)
682     printf $z $format, $data
683
684 Compresses and outputs the contents of the C<$data> parameter.
685
686 Returns true if successful.
687
688 =head2 syswrite
689
690 Usage is
691
692     $z->syswrite $data
693     $z->syswrite $data, $length
694     $z->syswrite $data, $length, $offset
695
696 Compresses and outputs the contents of the C<$data> parameter.
697
698 Returns the number of uncompressed bytes written, or C<undef> if
699 unsuccessful.
700
701 =head2 write
702
703 Usage is
704
705     $z->write $data
706     $z->write $data, $length
707     $z->write $data, $length, $offset
708
709 Compresses and outputs the contents of the C<$data> parameter.
710
711 Returns the number of uncompressed bytes written, or C<undef> if
712 unsuccessful.
713
714 =head2 flush
715
716 Usage is
717
718
719     $z->flush;
720     $z->flush($flush_type);
721
722
723 Flushes any pending compressed data to the output file/buffer.
724
725
726 This method takes an optional parameter, C<$flush_type>, that controls
727 how the flushing will be carried out. By default the C<$flush_type>
728 used is C<Z_FINISH>. Other valid values for C<$flush_type> are
729 C<Z_NO_FLUSH>, C<Z_SYNC_FLUSH>, C<Z_FULL_FLUSH> and C<Z_BLOCK>. It is
730 strongly recommended that you only set the C<flush_type> parameter if
731 you fully understand the implications of what it does - overuse of C<flush>
732 can seriously degrade the level of compression achieved. See the C<zlib>
733 documentation for details.
734
735
736 Returns true on success.
737
738
739 =head2 tell
740
741 Usage is
742
743     $z->tell()
744     tell $z
745
746 Returns the uncompressed file offset.
747
748 =head2 eof
749
750 Usage is
751
752     $z->eof();
753     eof($z);
754
755
756
757 Returns true if the C<close> method has been called.
758
759
760
761 =head2 seek
762
763     $z->seek($position, $whence);
764     seek($z, $position, $whence);
765
766
767
768
769 Provides a sub-set of the C<seek> functionality, with the restriction
770 that it is only legal to seek forward in the output file/buffer.
771 It is a fatal error to attempt to seek backward.
772
773 Empty parts of the file/buffer will have NULL (0x00) bytes written to them.
774
775
776
777 The C<$whence> parameter takes one the usual values, namely SEEK_SET,
778 SEEK_CUR or SEEK_END.
779
780 Returns 1 on success, 0 on failure.
781
782 =head2 binmode
783
784 Usage is
785
786     $z->binmode
787     binmode $z ;
788
789 This is a noop provided for completeness.
790
791 =head2 opened
792
793     $z->opened()
794
795 Returns true if the object currently refers to a opened file/buffer. 
796
797 =head2 autoflush
798
799     my $prev = $z->autoflush()
800     my $prev = $z->autoflush(EXPR)
801
802 If the C<$z> object is associated with a file or a filehandle, this method
803 returns the current autoflush setting for the underlying filehandle. If
804 C<EXPR> is present, and is non-zero, it will enable flushing after every
805 write/print operation.
806
807 If C<$z> is associated with a buffer, this method has no effect and always
808 returns C<undef>.
809
810 B<Note> that the special variable C<$|> B<cannot> be used to set or
811 retrieve the autoflush setting.
812
813 =head2 input_line_number
814
815     $z->input_line_number()
816     $z->input_line_number(EXPR)
817
818
819 This method always returns C<undef> when compressing. 
820
821
822
823 =head2 fileno
824
825     $z->fileno()
826     fileno($z)
827
828 If the C<$z> object is associated with a file or a filehandle, this method
829 will return the underlying file descriptor.
830
831 If the C<$z> object is is associated with a buffer, this method will
832 return undef.
833
834 =head2 close
835
836     $z->close() ;
837     close $z ;
838
839
840
841 Flushes any pending compressed data and then closes the output file/buffer. 
842
843
844
845 For most versions of Perl this method will be automatically invoked if
846 the IO::Compress::Deflate object is destroyed (either explicitly or by the
847 variable with the reference to the object going out of scope). The
848 exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
849 these cases, the C<close> method will be called automatically, but
850 not until global destruction of all live objects when the program is
851 terminating.
852
853 Therefore, if you want your scripts to be able to run on all versions
854 of Perl, you should call C<close> explicitly and not rely on automatic
855 closing.
856
857 Returns true on success, otherwise 0.
858
859 If the C<AutoClose> option has been enabled when the IO::Compress::Deflate
860 object was created, and the object is associated with a file, the
861 underlying file will also be closed.
862
863
864
865
866 =head2 newStream([OPTS])
867
868 Usage is
869
870     $z->newStream( [OPTS] )
871
872 Closes the current compressed data stream and starts a new one.
873
874 OPTS consists of the following sub-set of the the options that are
875 available when creating the C<$z> object,
876
877 =over 5
878
879
880
881 =item * Level
882
883
884
885 =back
886
887
888 =head2 deflateParams
889
890 Usage is
891
892     $z->deflateParams
893
894 TODO
895
896
897 =head1 Importing 
898
899
900 A number of symbolic constants are required by some methods in 
901 C<IO::Compress::Deflate>. None are imported by default.
902
903
904
905 =over 5
906
907 =item :all
908
909
910 Imports C<deflate>, C<$DeflateError> and all symbolic
911 constants that can be used by C<IO::Compress::Deflate>. Same as doing this
912
913     use IO::Compress::Deflate qw(deflate $DeflateError :constants) ;
914
915 =item :constants
916
917 Import all symbolic constants. Same as doing this
918
919
920     use IO::Compress::Deflate qw(:flush :level :strategy) ;
921
922
923 =item :flush
924
925 These symbolic constants are used by the C<flush> method.
926
927     Z_NO_FLUSH
928     Z_PARTIAL_FLUSH
929     Z_SYNC_FLUSH
930     Z_FULL_FLUSH
931     Z_FINISH
932     Z_BLOCK
933
934 =item :level
935
936 These symbolic constants are used by the C<Level> option in the constructor.
937
938     Z_NO_COMPRESSION
939     Z_BEST_SPEED
940     Z_BEST_COMPRESSION
941     Z_DEFAULT_COMPRESSION
942
943
944 =item :strategy
945
946 These symbolic constants are used by the C<Strategy> option in the constructor.
947
948     Z_FILTERED
949     Z_HUFFMAN_ONLY
950     Z_RLE
951     Z_FIXED
952     Z_DEFAULT_STRATEGY
953
954     
955     
956
957 =back
958
959 For 
960
961 =head1 EXAMPLES
962
963 TODO
964
965
966
967
968
969
970 =head1 SEE ALSO
971
972 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>
973
974 L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>
975
976 L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
977 L<Archive::Tar|Archive::Tar>,
978 L<IO::Zlib|IO::Zlib>
979
980
981 For RFC 1950, 1951 and 1952 see 
982 F<http://www.faqs.org/rfcs/rfc1950.html>,
983 F<http://www.faqs.org/rfcs/rfc1951.html> and
984 F<http://www.faqs.org/rfcs/rfc1952.html>
985
986 The I<zlib> compression library was written by Jean-loup Gailly
987 F<gzip@prep.ai.mit.edu> and Mark Adler F<madler@alumni.caltech.edu>.
988
989 The primary site for the I<zlib> compression library is
990 F<http://www.zlib.org>.
991
992 The primary site for gzip is F<http://www.gzip.org>.
993
994
995
996
997 =head1 AUTHOR
998
999 This module was written by Paul Marquess, F<pmqs@cpan.org>. 
1000
1001
1002
1003 =head1 MODIFICATION HISTORY
1004
1005 See the Changes file.
1006
1007 =head1 COPYRIGHT AND LICENSE
1008
1009 Copyright (c) 2005-2006 Paul Marquess. All rights reserved.
1010
1011 This program is free software; you can redistribute it and/or
1012 modify it under the same terms as Perl itself.
1013
1014