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