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