[perl #39639] perldoc -f waitpid has wrong code example
[p5sagit/p5-mst-13.2.git] / ext / Compress / IO / Base / lib / IO / Uncompress / AnyUncompress.pm
CommitLineData
25f0751f 1package IO::Uncompress::AnyUncompress ;
2
3use strict;
4use warnings;
5use bytes;
6
7use IO::Compress::Base::Common qw(createSelfTiedObject);
8
cb7abd7f 9use IO::Uncompress::Base ;
25f0751f 10
11BEGIN
12{
cb7abd7f 13 eval { require IO::Uncompress::Adapter::Inflate; import IO::Uncompress::Adapter::Inflate };
25f0751f 14 eval { require IO::Uncompress::Adapter::Bunzip2; import IO::Uncompress::Adapter::Bunzip2 };
cb7abd7f 15 eval { require IO::Uncompress::Adapter::LZO; import IO::Uncompress::Adapter::LZO };
16
17 eval { require IO::Uncompress::Bunzip2; import IO::Uncompress::Bunzip2 };
18 eval { require IO::Uncompress::UnLzop; import IO::Uncompress::UnLzop };
19 eval { require IO::Uncompress::Gunzip; import IO::Uncompress::Gunzip };
20 eval { require IO::Uncompress::Inflate; import IO::Uncompress::Inflate };
21 eval { require IO::Uncompress::RawInflate; import IO::Uncompress::RawInflate };
22 eval { require IO::Uncompress::Unzip; import IO::Uncompress::Unzip };
25f0751f 23}
24
25require Exporter ;
26
27our ($VERSION, @ISA, @EXPORT_OK, %EXPORT_TAGS, $AnyUncompressError);
28
e7d45986 29$VERSION = '2.000_13';
25f0751f 30$AnyUncompressError = '';
31
32@ISA = qw( Exporter IO::Uncompress::Base );
33@EXPORT_OK = qw( $AnyUncompressError anyuncompress ) ;
34%EXPORT_TAGS = %IO::Uncompress::Base::DEFLATE_CONSTANTS ;
35push @{ $EXPORT_TAGS{all} }, @EXPORT_OK ;
36Exporter::export_ok_tags('all');
37
38# TODO - allow the user to pick a set of the three formats to allow
39# or just assume want to auto-detect any of the three formats.
40
41sub new
42{
43 my $class = shift ;
44 my $obj = createSelfTiedObject($class, \$AnyUncompressError);
45 $obj->_create(undef, 0, @_);
46}
47
48sub anyuncompress
49{
50 my $obj = createSelfTiedObject(undef, \$AnyUncompressError);
51 return $obj->_inf(@_) ;
52}
53
54sub getExtraParams
55{
56 return ();
57}
58
59sub ckParams
60{
61 my $self = shift ;
62 my $got = shift ;
63
64 # any always needs both crc32 and adler32
65 $got->value('CRC32' => 1);
66 $got->value('ADLER32' => 1);
67
68 return 1;
69}
70
71sub mkUncomp
72{
73 my $self = shift ;
74 my $class = shift ;
75 my $got = shift ;
76
cb7abd7f 77 my $magic ;
78
25f0751f 79 # try zlib first
cb7abd7f 80 if (defined $IO::Uncompress::RawInflate::VERSION )
81 {
82 my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Inflate::mkUncompObject();
25f0751f 83
cb7abd7f 84 return $self->saveErrorString(undef, $errstr, $errno)
85 if ! defined $obj;
25f0751f 86
cb7abd7f 87 *$self->{Uncomp} = $obj;
88
89 $magic = $self->ckMagic( qw( RawInflate Inflate Gunzip Unzip ) );
25f0751f 90
cb7abd7f 91 if ($magic) {
92 *$self->{Info} = $self->readHeader($magic)
93 or return undef ;
25f0751f 94
cb7abd7f 95 return 1;
96 }
25f0751f 97 }
98
99 #foreach my $type ( qw( Bunzip2 UnLzop ) ) {
100 if (defined $IO::Uncompress::Bunzip2::VERSION and
101 $magic = $self->ckMagic('Bunzip2')) {
102 *$self->{Info} = $self->readHeader($magic)
103 or return undef ;
104
105 my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::Bunzip2::mkUncompObject();
106
107 return $self->saveErrorString(undef, $errstr, $errno)
108 if ! defined $obj;
109
110 *$self->{Uncomp} = $obj;
111
112 return 1;
113 }
114 elsif (defined $IO::Uncompress::UnLzop::VERSION and
115 $magic = $self->ckMagic('UnLzop')) {
116
117 *$self->{Info} = $self->readHeader($magic)
118 or return undef ;
119
120 my ($obj, $errstr, $errno) = IO::Uncompress::Adapter::LZO::mkUncompObject();
121
122 return $self->saveErrorString(undef, $errstr, $errno)
123 if ! defined $obj;
124
125 *$self->{Uncomp} = $obj;
126
127 return 1;
128 }
129
130 return 0 ;
131}
132
133
134
135sub ckMagic
136{
137 my $self = shift;
138 my @names = @_ ;
139
140 my $keep = ref $self ;
141 for my $class ( map { "IO::Uncompress::$_" } @names)
142 {
143 bless $self => $class;
144 my $magic = $self->ckMagic();
145
146 if ($magic)
147 {
148 #bless $self => $class;
149 return $magic ;
150 }
151
152 $self->pushBack(*$self->{HeaderPending}) ;
153 *$self->{HeaderPending} = '' ;
154 }
155
156 bless $self => $keep;
157 return undef;
158}
159
1601 ;
161
162__END__
163
164
165=head1 NAME
166
167
cb7abd7f 168IO::Uncompress::AnyUncompress - Uncompress gzip, zip, bzip2 or lzop file/buffer
25f0751f 169
170
171=head1 SYNOPSIS
172
173 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
174
175 my $status = anyuncompress $input => $output [,OPTS]
176 or die "anyuncompress failed: $AnyUncompressError\n";
177
178 my $z = new IO::Uncompress::AnyUncompress $input [OPTS]
179 or die "anyuncompress failed: $AnyUncompressError\n";
180
181 $status = $z->read($buffer)
182 $status = $z->read($buffer, $length)
183 $status = $z->read($buffer, $length, $offset)
184 $line = $z->getline()
185 $char = $z->getc()
186 $char = $z->ungetc()
187 $char = $z->opened()
188
e7d45986 189 $data = $z->trailingData()
190 $status = $z->nextStream()
25f0751f 191 $data = $z->getHeaderInfo()
192 $z->tell()
193 $z->seek($position, $whence)
194 $z->binmode()
195 $z->fileno()
196 $z->eof()
197 $z->close()
198
199 $AnyUncompressError ;
200
201 # IO::File mode
202
203 <$z>
204 read($z, $buffer);
205 read($z, $buffer, $length);
206 read($z, $buffer, $length, $offset);
207 tell($z)
208 seek($z, $position, $whence)
209 binmode($z)
210 fileno($z)
211 eof($z)
212 close($z)
213
214
215=head1 DESCRIPTION
216
217
218
219B<WARNING -- This is a Beta release>.
220
221=over 5
222
223=item * DO NOT use in production code.
224
225=item * The documentation is incomplete in places.
226
227=item * Parts of the interface defined here are tentative.
228
229=item * Please report any problems you find.
230
231=back
232
233
234
235
25f0751f 236This module provides a Perl interface that allows the reading of
cb7abd7f 237files/buffers that have been compressed with a variety of compression
238libraries.
239
240The formats supported are:
241
242=over 5
243
244=item RFC 1950
245
246=item RFC 1951
247
248=item gzip (RFC 1952)
249
250=item zip
251
252=item bzip2
253
254=item lzop
255
256=back
257
258The module will auto-detect which, if any, of the supported
259compression formats is being used.
260
25f0751f 261
25f0751f 262
263
264
265=head1 Functional Interface
266
267A top-level function, C<anyuncompress>, is provided to carry out
268"one-shot" uncompression between buffers and/or files. For finer
269control over the uncompression process, see the L</"OO Interface">
270section.
271
272 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
273
274 anyuncompress $input => $output [,OPTS]
275 or die "anyuncompress failed: $AnyUncompressError\n";
276
277
278
279The functional interface needs Perl5.005 or better.
280
281
282=head2 anyuncompress $input => $output [, OPTS]
283
284
285C<anyuncompress> expects at least two parameters, C<$input> and C<$output>.
286
287=head3 The C<$input> parameter
288
289The parameter, C<$input>, is used to define the source of
290the compressed data.
291
292It can take one of the following forms:
293
294=over 5
295
296=item A filename
297
298If the C<$input> parameter is a simple scalar, it is assumed to be a
299filename. This file will be opened for reading and the input data
300will be read from it.
301
302=item A filehandle
303
304If the C<$input> parameter is a filehandle, the input data will be
305read from it.
306The string '-' can be used as an alias for standard input.
307
308=item A scalar reference
309
310If C<$input> is a scalar reference, the input data will be read
311from C<$$input>.
312
313=item An array reference
314
315If C<$input> is an array reference, each element in the array must be a
316filename.
317
318The input data will be read from each file in turn.
319
320The complete array will be walked to ensure that it only
321contains valid filenames before any data is uncompressed.
322
323
324
325=item An Input FileGlob string
326
327If C<$input> is a string that is delimited by the characters "<" and ">"
328C<anyuncompress> will assume that it is an I<input fileglob string>. The
329input is the list of files that match the fileglob.
330
331If the fileglob does not match any files ...
332
333See L<File::GlobMapper|File::GlobMapper> for more details.
334
335
336=back
337
338If the C<$input> parameter is any other type, C<undef> will be returned.
339
340
341
342=head3 The C<$output> parameter
343
344The parameter C<$output> is used to control the destination of the
345uncompressed data. This parameter can take one of these forms.
346
347=over 5
348
349=item A filename
350
351If the C<$output> parameter is a simple scalar, it is assumed to be a
352filename. This file will be opened for writing and the uncompressed
353data will be written to it.
354
355=item A filehandle
356
357If the C<$output> parameter is a filehandle, the uncompressed data
358will be written to it.
359The string '-' can be used as an alias for standard output.
360
361
362=item A scalar reference
363
364If C<$output> is a scalar reference, the uncompressed data will be
365stored in C<$$output>.
366
367
368
369=item An Array Reference
370
371If C<$output> is an array reference, the uncompressed data will be
372pushed onto the array.
373
374=item An Output FileGlob
375
376If C<$output> is a string that is delimited by the characters "<" and ">"
377C<anyuncompress> will assume that it is an I<output fileglob string>. The
378output is the list of files that match the fileglob.
379
380When C<$output> is an fileglob string, C<$input> must also be a fileglob
381string. Anything else is an error.
382
383=back
384
385If the C<$output> parameter is any other type, C<undef> will be returned.
386
387
388
389=head2 Notes
390
c70c1701 391
392When C<$input> maps to multiple compressed files/buffers and C<$output> is
393a single file/buffer, after uncompression C<$output> will contain a
394concatenation of all the uncompressed data from each of the input
395files/buffers.
396
397
25f0751f 398
399
400
401=head2 Optional Parameters
402
403Unless specified below, the optional parameters for C<anyuncompress>,
404C<OPTS>, are the same as those used with the OO interface defined in the
405L</"Constructor Options"> section below.
406
407=over 5
408
e7d45986 409=item C<< AutoClose => 0|1 >>
25f0751f 410
411This option applies to any input or output data streams to
412C<anyuncompress> that are filehandles.
413
414If C<AutoClose> is specified, and the value is true, it will result in all
415input and/or output filehandles being closed once C<anyuncompress> has
416completed.
417
418This parameter defaults to 0.
419
420
e7d45986 421=item C<< BinModeOut => 0|1 >>
25f0751f 422
423When writing to a file or filehandle, set C<binmode> before writing to the
424file.
425
426Defaults to 0.
427
428
429
430
431
e7d45986 432=item C<< Append => 0|1 >>
25f0751f 433
434TODO
435
e7d45986 436=item C<< MultiStream => 0|1 >>
25f0751f 437
e7d45986 438If the input file/buffer contains multiple compressed data streams, this
439option will uncompress the whole lot as a single data stream.
25f0751f 440
e7d45986 441Defaults to 0.
25f0751f 442
443
444
445=back
446
447
448
449
450=head2 Examples
451
452To read the contents of the file C<file1.txt.Compressed> and write the
453compressed data to the file C<file1.txt>.
454
455 use strict ;
456 use warnings ;
457 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
458
459 my $input = "file1.txt.Compressed";
460 my $output = "file1.txt";
461 anyuncompress $input => $output
462 or die "anyuncompress failed: $AnyUncompressError\n";
463
464
465To read from an existing Perl filehandle, C<$input>, and write the
466uncompressed data to a buffer, C<$buffer>.
467
468 use strict ;
469 use warnings ;
470 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
471 use IO::File ;
472
473 my $input = new IO::File "<file1.txt.Compressed"
474 or die "Cannot open 'file1.txt.Compressed': $!\n" ;
475 my $buffer ;
476 anyuncompress $input => \$buffer
477 or die "anyuncompress failed: $AnyUncompressError\n";
478
479To uncompress all files in the directory "/my/home" that match "*.txt.Compressed" and store the compressed data in the same directory
480
481 use strict ;
482 use warnings ;
483 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
484
485 anyuncompress '</my/home/*.txt.Compressed>' => '</my/home/#1.txt>'
486 or die "anyuncompress failed: $AnyUncompressError\n";
487
488and if you want to compress each file one at a time, this will do the trick
489
490 use strict ;
491 use warnings ;
492 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
493
494 for my $input ( glob "/my/home/*.txt.Compressed" )
495 {
496 my $output = $input;
497 $output =~ s/.Compressed// ;
498 anyuncompress $input => $output
499 or die "Error compressing '$input': $AnyUncompressError\n";
500 }
501
502=head1 OO Interface
503
504=head2 Constructor
505
506The format of the constructor for IO::Uncompress::AnyUncompress is shown below
507
508
509 my $z = new IO::Uncompress::AnyUncompress $input [OPTS]
510 or die "IO::Uncompress::AnyUncompress failed: $AnyUncompressError\n";
511
512Returns an C<IO::Uncompress::AnyUncompress> object on success and undef on failure.
513The variable C<$AnyUncompressError> will contain an error message on failure.
514
515If you are running Perl 5.005 or better the object, C<$z>, returned from
516IO::Uncompress::AnyUncompress can be used exactly like an L<IO::File|IO::File> filehandle.
517This means that all normal input file operations can be carried out with
518C<$z>. For example, to read a line from a compressed file/buffer you can
519use either of these forms
520
521 $line = $z->getline();
522 $line = <$z>;
523
524The mandatory parameter C<$input> is used to determine the source of the
525compressed data. This parameter can take one of three forms.
526
527=over 5
528
529=item A filename
530
531If the C<$input> parameter is a scalar, it is assumed to be a filename. This
532file will be opened for reading and the compressed data will be read from it.
533
534=item A filehandle
535
536If the C<$input> parameter is a filehandle, the compressed data will be
537read from it.
538The string '-' can be used as an alias for standard input.
539
540
541=item A scalar reference
542
543If C<$input> is a scalar reference, the compressed data will be read from
544C<$$output>.
545
546=back
547
548=head2 Constructor Options
549
550
551The option names defined below are case insensitive and can be optionally
552prefixed by a '-'. So all of the following are valid
553
554 -AutoClose
555 -autoclose
556 AUTOCLOSE
557 autoclose
558
559OPTS is a combination of the following options:
560
561=over 5
562
e7d45986 563=item C<< AutoClose => 0|1 >>
25f0751f 564
565This option is only valid when the C<$input> parameter is a filehandle. If
566specified, and the value is true, it will result in the file being closed once
567either the C<close> method is called or the IO::Uncompress::AnyUncompress object is
568destroyed.
569
570This parameter defaults to 0.
571
e7d45986 572=item C<< MultiStream => 0|1 >>
25f0751f 573
574
575
576Allows multiple concatenated compressed streams to be treated as a single
577compressed stream. Decompression will stop once either the end of the
578file/buffer is reached, an error is encountered (premature eof, corrupt
579compressed data) or the end of a stream is not immediately followed by the
580start of another stream.
581
582This parameter defaults to 0.
583
584
e7d45986 585=item C<< Prime => $string >>
25f0751f 586
587This option will uncompress the contents of C<$string> before processing the
588input file/buffer.
589
590This option can be useful when the compressed data is embedded in another
591file/data structure and it is not possible to work out where the compressed
592data begins without having to read the first few bytes. If this is the
593case, the uncompression can be I<primed> with these bytes using this
594option.
595
e7d45986 596=item C<< Transparent => 0|1 >>
25f0751f 597
598If this option is set and the input file or buffer is not compressed data,
599the module will allow reading of it anyway.
600
601This option defaults to 1.
602
e7d45986 603=item C<< BlockSize => $num >>
25f0751f 604
605When reading the compressed input data, IO::Uncompress::AnyUncompress will read it in
606blocks of C<$num> bytes.
607
608This option defaults to 4096.
609
e7d45986 610=item C<< InputLength => $size >>
25f0751f 611
612When present this option will limit the number of compressed bytes read
613from the input file/buffer to C<$size>. This option can be used in the
614situation where there is useful data directly after the compressed data
615stream and you know beforehand the exact length of the compressed data
616stream.
617
618This option is mostly used when reading from a filehandle, in which case
619the file pointer will be left pointing to the first byte directly after the
620compressed data stream.
621
622
623
624This option defaults to off.
625
e7d45986 626=item C<< Append => 0|1 >>
25f0751f 627
628This option controls what the C<read> method does with uncompressed data.
629
630If set to 1, all uncompressed data will be appended to the output parameter
631of the C<read> method.
632
633If set to 0, the contents of the output parameter of the C<read> method
634will be overwritten by the uncompressed data.
635
636Defaults to 0.
637
e7d45986 638=item C<< Strict => 0|1 >>
25f0751f 639
640
641
642This option controls whether the extra checks defined below are used when
643carrying out the decompression. When Strict is on, the extra tests are
644carried out, when Strict is off they are not.
645
646The default for this option is off.
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661=back
662
663=head2 Examples
664
665TODO
666
667=head1 Methods
668
669=head2 read
670
671Usage is
672
673 $status = $z->read($buffer)
674
675Reads a block of compressed data (the size the the compressed block is
676determined by the C<Buffer> option in the constructor), uncompresses it and
677writes any uncompressed data into C<$buffer>. If the C<Append> parameter is
678set in the constructor, the uncompressed data will be appended to the
679C<$buffer> parameter. Otherwise C<$buffer> will be overwritten.
680
681Returns the number of uncompressed bytes written to C<$buffer>, zero if eof
682or a negative number on error.
683
684=head2 read
685
686Usage is
687
688 $status = $z->read($buffer, $length)
689 $status = $z->read($buffer, $length, $offset)
690
691 $status = read($z, $buffer, $length)
692 $status = read($z, $buffer, $length, $offset)
693
694Attempt to read C<$length> bytes of uncompressed data into C<$buffer>.
695
696The main difference between this form of the C<read> method and the
697previous one, is that this one will attempt to return I<exactly> C<$length>
698bytes. The only circumstances that this function will not is if end-of-file
699or an IO error is encountered.
700
701Returns the number of uncompressed bytes written to C<$buffer>, zero if eof
702or a negative number on error.
703
704
705=head2 getline
706
707Usage is
708
709 $line = $z->getline()
710 $line = <$z>
711
712Reads a single line.
713
714This method fully supports the use of of the variable C<$/>
715(or C<$INPUT_RECORD_SEPARATOR> or C<$RS> when C<English> is in use) to
716determine what constitutes an end of line. Both paragraph mode and file
717slurp mode are supported.
718
719
720=head2 getc
721
722Usage is
723
724 $char = $z->getc()
725
726Read a single character.
727
728=head2 ungetc
729
730Usage is
731
732 $char = $z->ungetc($string)
733
734
735
736
737=head2 getHeaderInfo
738
739Usage is
740
741 $hdr = $z->getHeaderInfo();
742 @hdrs = $z->getHeaderInfo();
743
744This method returns either a hash reference (in scalar context) or a list
745or hash references (in array context) that contains information about each
746of the header fields in the compressed data stream(s).
747
748
749
750
751=head2 tell
752
753Usage is
754
755 $z->tell()
756 tell $z
757
758Returns the uncompressed file offset.
759
760=head2 eof
761
762Usage is
763
764 $z->eof();
765 eof($z);
766
767
768
769Returns true if the end of the compressed input stream has been reached.
770
771
772
773=head2 seek
774
775 $z->seek($position, $whence);
776 seek($z, $position, $whence);
777
778
779
780
781Provides a sub-set of the C<seek> functionality, with the restriction
782that it is only legal to seek forward in the input file/buffer.
783It is a fatal error to attempt to seek backward.
784
785
786
787The C<$whence> parameter takes one the usual values, namely SEEK_SET,
788SEEK_CUR or SEEK_END.
789
790Returns 1 on success, 0 on failure.
791
792=head2 binmode
793
794Usage is
795
796 $z->binmode
797 binmode $z ;
798
799This is a noop provided for completeness.
800
801=head2 opened
802
803 $z->opened()
804
805Returns true if the object currently refers to a opened file/buffer.
806
807=head2 autoflush
808
809 my $prev = $z->autoflush()
810 my $prev = $z->autoflush(EXPR)
811
812If the C<$z> object is associated with a file or a filehandle, this method
813returns the current autoflush setting for the underlying filehandle. If
814C<EXPR> is present, and is non-zero, it will enable flushing after every
815write/print operation.
816
817If C<$z> is associated with a buffer, this method has no effect and always
818returns C<undef>.
819
820B<Note> that the special variable C<$|> B<cannot> be used to set or
821retrieve the autoflush setting.
822
823=head2 input_line_number
824
825 $z->input_line_number()
826 $z->input_line_number(EXPR)
827
828
829
830Returns the current uncompressed line number. If C<EXPR> is present it has
831the effect of setting the line number. Note that setting the line number
832does not change the current position within the file/buffer being read.
833
834The contents of C<$/> are used to to determine what constitutes a line
835terminator.
836
837
838
839=head2 fileno
840
841 $z->fileno()
842 fileno($z)
843
844If the C<$z> object is associated with a file or a filehandle, this method
845will return the underlying file descriptor.
846
847If the C<$z> object is is associated with a buffer, this method will
848return undef.
849
850=head2 close
851
852 $z->close() ;
853 close $z ;
854
855
856
857Closes the output file/buffer.
858
859
860
861For most versions of Perl this method will be automatically invoked if
862the IO::Uncompress::AnyUncompress object is destroyed (either explicitly or by the
863variable with the reference to the object going out of scope). The
864exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
865these cases, the C<close> method will be called automatically, but
866not until global destruction of all live objects when the program is
867terminating.
868
869Therefore, if you want your scripts to be able to run on all versions
870of Perl, you should call C<close> explicitly and not rely on automatic
871closing.
872
873Returns true on success, otherwise 0.
874
875If the C<AutoClose> option has been enabled when the IO::Uncompress::AnyUncompress
876object was created, and the object is associated with a file, the
877underlying file will also be closed.
878
879
880
881
e7d45986 882=head2 nextStream
883
884Usage is
885
886 my $status = $z->nextStream();
887
888Skips to the next compressed data stream in the input file/buffer. If a new
889compressed data stream is found, the eof marker will be cleared, C<$.> will
890be reset to 0.
891
892Returns 1 if a new stream was found, 0 if none was found, and -1 if an
893error was encountered.
894
895=head2 trailingData
896
897Usage is
898
899 my $data = $z->trailingData();
900
901Returns any data that
902
25f0751f 903=head1 Importing
904
905No symbolic constants are required by this IO::Uncompress::AnyUncompress at present.
906
907=over 5
908
909=item :all
910
911Imports C<anyuncompress> and C<$AnyUncompressError>.
912Same as doing this
913
914 use IO::Uncompress::AnyUncompress qw(anyuncompress $AnyUncompressError) ;
915
916=back
917
918=head1 EXAMPLES
919
920
921
922
923=head1 SEE ALSO
924
925L<Compress::Zlib>, L<IO::Compress::Gzip>, L<IO::Uncompress::Gunzip>, L<IO::Compress::Deflate>, 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>
926
927L<Compress::Zlib::FAQ|Compress::Zlib::FAQ>
928
929L<File::GlobMapper|File::GlobMapper>, L<Archive::Zip|Archive::Zip>,
930L<Archive::Tar|Archive::Tar>,
931L<IO::Zlib|IO::Zlib>
932
933
934
935
936
25f0751f 937=head1 AUTHOR
938
cb7abd7f 939This module was written by Paul Marquess, F<pmqs@cpan.org>.
25f0751f 940
941
942
943=head1 MODIFICATION HISTORY
944
945See the Changes file.
946
947=head1 COPYRIGHT AND LICENSE
25f0751f 948
949Copyright (c) 2005-2006 Paul Marquess. All rights reserved.
950
951This program is free software; you can redistribute it and/or
952modify it under the same terms as Perl itself.
953