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