1IO::Compress::RawDeflatUes(e3r)Contributed Perl DocumentIaOt:i:oCnompress::RawDeflate(3)
2
3
4
6 IO::Compress::RawDeflate - Write RFC 1951 files/buffers
7
9 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
10
11 my $status = rawdeflate $input => $output [,OPTS]
12 or die "rawdeflate failed: $RawDeflateError\n";
13
14 my $z = new IO::Compress::RawDeflate $output [,OPTS]
15 or die "rawdeflate failed: $RawDeflateError\n";
16
17 $z->print($string);
18 $z->printf($format, $string);
19 $z->write($string);
20 $z->syswrite($string [, $length, $offset]);
21 $z->flush();
22 $z->tell();
23 $z->eof();
24 $z->seek($position, $whence);
25 $z->binmode();
26 $z->fileno();
27 $z->opened();
28 $z->autoflush();
29 $z->input_line_number();
30 $z->newStream( [OPTS] );
31
32 $z->deflateParams();
33
34 $z->close() ;
35
36 $RawDeflateError ;
37
38 # IO::File mode
39
40 print $z $string;
41 printf $z $format, $string;
42 tell $z
43 eof $z
44 seek $z, $position, $whence
45 binmode $z
46 fileno $z
47 close $z ;
48
50 This module provides a Perl interface that allows writing compressed
51 data to files or buffer as defined in RFC 1951.
52
53 Note that RFC 1951 data is not a good choice of compression format to
54 use in isolation, especially if you want to auto-detect it.
55
56 For reading RFC 1951 files/buffers, see the companion module
57 IO::Uncompress::RawInflate.
58
60 A top-level function, "rawdeflate", is provided to carry out "one-shot"
61 compression between buffers and/or files. For finer control over the
62 compression process, see the "OO Interface" section.
63
64 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
65
66 rawdeflate $input_filename_or_reference => $output_filename_or_reference [,OPTS]
67 or die "rawdeflate failed: $RawDeflateError\n";
68
69 The functional interface needs Perl5.005 or better.
70
71 rawdeflate $input_filename_or_reference => $output_filename_or_reference [,
72 OPTS]
73 "rawdeflate" expects at least two parameters,
74 $input_filename_or_reference and $output_filename_or_reference.
75
76 The $input_filename_or_reference parameter
77
78 The parameter, $input_filename_or_reference, is used to define the
79 source of the uncompressed data.
80
81 It can take one of the following forms:
82
83 A filename
84 If the <$input_filename_or_reference> parameter is a simple
85 scalar, it is assumed to be a filename. This file will be opened
86 for reading and the input data will be read from it.
87
88 A filehandle
89 If the $input_filename_or_reference parameter is a filehandle, the
90 input data will be read from it. The string '-' can be used as an
91 alias for standard input.
92
93 A scalar reference
94 If $input_filename_or_reference is a scalar reference, the input
95 data will be read from $$input_filename_or_reference.
96
97 An array reference
98 If $input_filename_or_reference is an array reference, each
99 element in the array must be a filename.
100
101 The input data will be read from each file in turn.
102
103 The complete array will be walked to ensure that it only contains
104 valid filenames before any data is compressed.
105
106 An Input FileGlob string
107 If $input_filename_or_reference is a string that is delimited by
108 the characters "<" and ">" "rawdeflate" will assume that it is an
109 input fileglob string. The input is the list of files that match
110 the fileglob.
111
112 See File::GlobMapper for more details.
113
114 If the $input_filename_or_reference parameter is any other type,
115 "undef" will be returned.
116
117 The $output_filename_or_reference parameter
118
119 The parameter $output_filename_or_reference is used to control the
120 destination of the compressed data. This parameter can take one of
121 these forms.
122
123 A filename
124 If the $output_filename_or_reference parameter is a simple scalar,
125 it is assumed to be a filename. This file will be opened for
126 writing and the compressed data will be written to it.
127
128 A filehandle
129 If the $output_filename_or_reference parameter is a filehandle,
130 the compressed data will be written to it. The string '-' can be
131 used as an alias for standard output.
132
133 A scalar reference
134 If $output_filename_or_reference is a scalar reference, the
135 compressed data will be stored in $$output_filename_or_reference.
136
137 An Array Reference
138 If $output_filename_or_reference is an array reference, the
139 compressed data will be pushed onto the array.
140
141 An Output FileGlob
142 If $output_filename_or_reference is a string that is delimited by
143 the characters "<" and ">" "rawdeflate" will assume that it is an
144 output fileglob string. The output is the list of files that match
145 the fileglob.
146
147 When $output_filename_or_reference is an fileglob string,
148 $input_filename_or_reference must also be a fileglob string.
149 Anything else is an error.
150
151 See File::GlobMapper for more details.
152
153 If the $output_filename_or_reference parameter is any other type,
154 "undef" will be returned.
155
156 Notes
157 When $input_filename_or_reference maps to multiple files/buffers and
158 $output_filename_or_reference is a single file/buffer the input
159 files/buffers will be stored in $output_filename_or_reference as a
160 concatenated series of compressed data streams.
161
162 Optional Parameters
163 Unless specified below, the optional parameters for "rawdeflate",
164 "OPTS", are the same as those used with the OO interface defined in the
165 "Constructor Options" section below.
166
167 "AutoClose => 0|1"
168 This option applies to any input or output data streams to
169 "rawdeflate" that are filehandles.
170
171 If "AutoClose" is specified, and the value is true, it will result
172 in all input and/or output filehandles being closed once
173 "rawdeflate" has completed.
174
175 This parameter defaults to 0.
176
177 "BinModeIn => 0|1"
178 This option is now a no-op. All files will be read in binmode.
179
180 "Append => 0|1"
181 The behaviour of this option is dependent on the type of output
182 data stream.
183
184 · A Buffer
185
186 If "Append" is enabled, all compressed data will be append to
187 the end of the output buffer. Otherwise the output buffer
188 will be cleared before any compressed data is written to it.
189
190 · A Filename
191
192 If "Append" is enabled, the file will be opened in append
193 mode. Otherwise the contents of the file, if any, will be
194 truncated before any compressed data is written to it.
195
196 · A Filehandle
197
198 If "Append" is enabled, the filehandle will be positioned to
199 the end of the file via a call to "seek" before any
200 compressed data is written to it. Otherwise the file pointer
201 will not be moved.
202
203 When "Append" is specified, and set to true, it will append all
204 compressed data to the output data stream.
205
206 So when the output is a filehandle it will carry out a seek to the
207 eof before writing any compressed data. If the output is a
208 filename, it will be opened for appending. If the output is a
209 buffer, all compressed data will be appended to the existing
210 buffer.
211
212 Conversely when "Append" is not specified, or it is present and is
213 set to false, it will operate as follows.
214
215 When the output is a filename, it will truncate the contents of
216 the file before writing any compressed data. If the output is a
217 filehandle its position will not be changed. If the output is a
218 buffer, it will be wiped before any compressed data is output.
219
220 Defaults to 0.
221
222 Examples
223 To read the contents of the file "file1.txt" and write the compressed
224 data to the file "file1.txt.1951".
225
226 use strict ;
227 use warnings ;
228 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
229
230 my $input = "file1.txt";
231 rawdeflate $input => "$input.1951"
232 or die "rawdeflate failed: $RawDeflateError\n";
233
234 To read from an existing Perl filehandle, $input, and write the
235 compressed data to a buffer, $buffer.
236
237 use strict ;
238 use warnings ;
239 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
240 use IO::File ;
241
242 my $input = new IO::File "<file1.txt"
243 or die "Cannot open 'file1.txt': $!\n" ;
244 my $buffer ;
245 rawdeflate $input => \$buffer
246 or die "rawdeflate failed: $RawDeflateError\n";
247
248 To compress all files in the directory "/my/home" that match "*.txt"
249 and store the compressed data in the same directory
250
251 use strict ;
252 use warnings ;
253 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
254
255 rawdeflate '</my/home/*.txt>' => '<*.1951>'
256 or die "rawdeflate failed: $RawDeflateError\n";
257
258 and if you want to compress each file one at a time, this will do the
259 trick
260
261 use strict ;
262 use warnings ;
263 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError) ;
264
265 for my $input ( glob "/my/home/*.txt" )
266 {
267 my $output = "$input.1951" ;
268 rawdeflate $input => $output
269 or die "Error compressing '$input': $RawDeflateError\n";
270 }
271
273 Constructor
274 The format of the constructor for "IO::Compress::RawDeflate" is shown
275 below
276
277 my $z = new IO::Compress::RawDeflate $output [,OPTS]
278 or die "IO::Compress::RawDeflate failed: $RawDeflateError\n";
279
280 It returns an "IO::Compress::RawDeflate" object on success and undef on
281 failure. The variable $RawDeflateError will contain an error message
282 on failure.
283
284 If you are running Perl 5.005 or better the object, $z, returned from
285 IO::Compress::RawDeflate can be used exactly like an IO::File
286 filehandle. This means that all normal output file operations can be
287 carried out with $z. For example, to write to a compressed file/buffer
288 you can use either of these forms
289
290 $z->print("hello world\n");
291 print $z "hello world\n";
292
293 The mandatory parameter $output is used to control the destination of
294 the compressed data. This parameter can take one of these forms.
295
296 A filename
297 If the $output parameter is a simple scalar, it is assumed to be a
298 filename. This file will be opened for writing and the compressed
299 data will be written to it.
300
301 A filehandle
302 If the $output parameter is a filehandle, the compressed data will
303 be written to it. The string '-' can be used as an alias for
304 standard output.
305
306 A scalar reference
307 If $output is a scalar reference, the compressed data will be
308 stored in $$output.
309
310 If the $output parameter is any other type,
311 "IO::Compress::RawDeflate"::new will return undef.
312
313 Constructor Options
314 "OPTS" is any combination of the following options:
315
316 "AutoClose => 0|1"
317 This option is only valid when the $output parameter is a
318 filehandle. If specified, and the value is true, it will result in
319 the $output being closed once either the "close" method is called
320 or the "IO::Compress::RawDeflate" object is destroyed.
321
322 This parameter defaults to 0.
323
324 "Append => 0|1"
325 Opens $output in append mode.
326
327 The behaviour of this option is dependent on the type of $output.
328
329 · A Buffer
330
331 If $output is a buffer and "Append" is enabled, all
332 compressed data will be append to the end of $output.
333 Otherwise $output will be cleared before any data is written
334 to it.
335
336 · A Filename
337
338 If $output is a filename and "Append" is enabled, the file
339 will be opened in append mode. Otherwise the contents of the
340 file, if any, will be truncated before any compressed data is
341 written to it.
342
343 · A Filehandle
344
345 If $output is a filehandle, the file pointer will be
346 positioned to the end of the file via a call to "seek" before
347 any compressed data is written to it. Otherwise the file
348 pointer will not be moved.
349
350 This parameter defaults to 0.
351
352 "Merge => 0|1"
353 This option is used to compress input data and append it to an
354 existing compressed data stream in $output. The end result is a
355 single compressed data stream stored in $output.
356
357 It is a fatal error to attempt to use this option when $output is
358 not an RFC 1951 data stream.
359
360 There are a number of other limitations with the "Merge" option:
361
362 1. This module needs to have been built with zlib 1.2.1 or
363 better to work. A fatal error will be thrown if "Merge" is
364 used with an older version of zlib.
365
366 2. If $output is a file or a filehandle, it must be seekable.
367
368 This parameter defaults to 0.
369
370 -Level
371 Defines the compression level used by zlib. The value should
372 either be a number between 0 and 9 (0 means no compression and 9
373 is maximum compression), or one of the symbolic constants defined
374 below.
375
376 Z_NO_COMPRESSION
377 Z_BEST_SPEED
378 Z_BEST_COMPRESSION
379 Z_DEFAULT_COMPRESSION
380
381 The default is Z_DEFAULT_COMPRESSION.
382
383 Note, these constants are not imported by
384 "IO::Compress::RawDeflate" by default.
385
386 use IO::Compress::RawDeflate qw(:strategy);
387 use IO::Compress::RawDeflate qw(:constants);
388 use IO::Compress::RawDeflate qw(:all);
389
390 -Strategy
391 Defines the strategy used to tune the compression. Use one of the
392 symbolic constants defined below.
393
394 Z_FILTERED
395 Z_HUFFMAN_ONLY
396 Z_RLE
397 Z_FIXED
398 Z_DEFAULT_STRATEGY
399
400 The default is Z_DEFAULT_STRATEGY.
401
402 "Strict => 0|1"
403 This is a placeholder option.
404
405 Examples
406 TODO
407
409 print
410 Usage is
411
412 $z->print($data)
413 print $z $data
414
415 Compresses and outputs the contents of the $data parameter. This has
416 the same behaviour as the "print" built-in.
417
418 Returns true if successful.
419
420 printf
421 Usage is
422
423 $z->printf($format, $data)
424 printf $z $format, $data
425
426 Compresses and outputs the contents of the $data parameter.
427
428 Returns true if successful.
429
430 syswrite
431 Usage is
432
433 $z->syswrite $data
434 $z->syswrite $data, $length
435 $z->syswrite $data, $length, $offset
436
437 Compresses and outputs the contents of the $data parameter.
438
439 Returns the number of uncompressed bytes written, or "undef" if
440 unsuccessful.
441
442 write
443 Usage is
444
445 $z->write $data
446 $z->write $data, $length
447 $z->write $data, $length, $offset
448
449 Compresses and outputs the contents of the $data parameter.
450
451 Returns the number of uncompressed bytes written, or "undef" if
452 unsuccessful.
453
454 flush
455 Usage is
456
457 $z->flush;
458 $z->flush($flush_type);
459
460 Flushes any pending compressed data to the output file/buffer.
461
462 This method takes an optional parameter, $flush_type, that controls how
463 the flushing will be carried out. By default the $flush_type used is
464 "Z_FINISH". Other valid values for $flush_type are "Z_NO_FLUSH",
465 "Z_SYNC_FLUSH", "Z_FULL_FLUSH" and "Z_BLOCK". It is strongly
466 recommended that you only set the "flush_type" parameter if you fully
467 understand the implications of what it does - overuse of "flush" can
468 seriously degrade the level of compression achieved. See the "zlib"
469 documentation for details.
470
471 Returns true on success.
472
473 tell
474 Usage is
475
476 $z->tell()
477 tell $z
478
479 Returns the uncompressed file offset.
480
481 eof
482 Usage is
483
484 $z->eof();
485 eof($z);
486
487 Returns true if the "close" method has been called.
488
489 seek
490 $z->seek($position, $whence);
491 seek($z, $position, $whence);
492
493 Provides a sub-set of the "seek" functionality, with the restriction
494 that it is only legal to seek forward in the output file/buffer. It is
495 a fatal error to attempt to seek backward.
496
497 Empty parts of the file/buffer will have NULL (0x00) bytes written to
498 them.
499
500 The $whence parameter takes one the usual values, namely SEEK_SET,
501 SEEK_CUR or SEEK_END.
502
503 Returns 1 on success, 0 on failure.
504
505 binmode
506 Usage is
507
508 $z->binmode
509 binmode $z ;
510
511 This is a noop provided for completeness.
512
513 opened
514 $z->opened()
515
516 Returns true if the object currently refers to a opened file/buffer.
517
518 autoflush
519 my $prev = $z->autoflush()
520 my $prev = $z->autoflush(EXPR)
521
522 If the $z object is associated with a file or a filehandle, this method
523 returns the current autoflush setting for the underlying filehandle. If
524 "EXPR" is present, and is non-zero, it will enable flushing after every
525 write/print operation.
526
527 If $z is associated with a buffer, this method has no effect and always
528 returns "undef".
529
530 Note that the special variable $| cannot be used to set or retrieve the
531 autoflush setting.
532
533 input_line_number
534 $z->input_line_number()
535 $z->input_line_number(EXPR)
536
537 This method always returns "undef" when compressing.
538
539 fileno
540 $z->fileno()
541 fileno($z)
542
543 If the $z object is associated with a file or a filehandle, "fileno"
544 will return the underlying file descriptor. Once the "close" method is
545 called "fileno" will return "undef".
546
547 If the $z object is associated with a buffer, this method will return
548 "undef".
549
550 close
551 $z->close() ;
552 close $z ;
553
554 Flushes any pending compressed data and then closes the output
555 file/buffer.
556
557 For most versions of Perl this method will be automatically invoked if
558 the IO::Compress::RawDeflate object is destroyed (either explicitly or
559 by the variable with the reference to the object going out of scope).
560 The exceptions are Perl versions 5.005 through 5.00504 and 5.8.0. In
561 these cases, the "close" method will be called automatically, but not
562 until global destruction of all live objects when the program is
563 terminating.
564
565 Therefore, if you want your scripts to be able to run on all versions
566 of Perl, you should call "close" explicitly and not rely on automatic
567 closing.
568
569 Returns true on success, otherwise 0.
570
571 If the "AutoClose" option has been enabled when the
572 IO::Compress::RawDeflate object was created, and the object is
573 associated with a file, the underlying file will also be closed.
574
575 newStream([OPTS])
576 Usage is
577
578 $z->newStream( [OPTS] )
579
580 Closes the current compressed data stream and starts a new one.
581
582 OPTS consists of any of the options that are available when creating
583 the $z object.
584
585 See the "Constructor Options" section for more details.
586
587 deflateParams
588 Usage is
589
590 $z->deflateParams
591
592 TODO
593
595 A number of symbolic constants are required by some methods in
596 "IO::Compress::RawDeflate". None are imported by default.
597
598 :all Imports "rawdeflate", $RawDeflateError and all symbolic constants
599 that can be used by "IO::Compress::RawDeflate". Same as doing this
600
601 use IO::Compress::RawDeflate qw(rawdeflate $RawDeflateError :constants) ;
602
603 :constants
604 Import all symbolic constants. Same as doing this
605
606 use IO::Compress::RawDeflate qw(:flush :level :strategy) ;
607
608 :flush
609 These symbolic constants are used by the "flush" method.
610
611 Z_NO_FLUSH
612 Z_PARTIAL_FLUSH
613 Z_SYNC_FLUSH
614 Z_FULL_FLUSH
615 Z_FINISH
616 Z_BLOCK
617
618 :level
619 These symbolic constants are used by the "Level" option in the
620 constructor.
621
622 Z_NO_COMPRESSION
623 Z_BEST_SPEED
624 Z_BEST_COMPRESSION
625 Z_DEFAULT_COMPRESSION
626
627 :strategy
628 These symbolic constants are used by the "Strategy" option in the
629 constructor.
630
631 Z_FILTERED
632 Z_HUFFMAN_ONLY
633 Z_RLE
634 Z_FIXED
635 Z_DEFAULT_STRATEGY
636
638 Apache::GZip Revisited
639 See IO::Compress::FAQ
640
641 Working with Net::FTP
642 See IO::Compress::FAQ
643
645 Compress::Zlib, IO::Compress::Gzip, IO::Uncompress::Gunzip,
646 IO::Compress::Deflate, IO::Uncompress::Inflate,
647 IO::Uncompress::RawInflate, IO::Compress::Bzip2,
648 IO::Uncompress::Bunzip2, IO::Compress::Lzma, IO::Uncompress::UnLzma,
649 IO::Compress::Xz, IO::Uncompress::UnXz, IO::Compress::Lzip,
650 IO::Uncompress::UnLzip, IO::Compress::Lzop, IO::Uncompress::UnLzop,
651 IO::Compress::Lzf, IO::Uncompress::UnLzf, IO::Compress::Zstd,
652 IO::Uncompress::UnZstd, IO::Uncompress::AnyInflate,
653 IO::Uncompress::AnyUncompress
654
655 IO::Compress::FAQ
656
657 File::GlobMapper, Archive::Zip, Archive::Tar, IO::Zlib
658
659 For RFC 1950, 1951 and 1952 see
660 <http://www.faqs.org/rfcs/rfc1950.html>,
661 <http://www.faqs.org/rfcs/rfc1951.html> and
662 <http://www.faqs.org/rfcs/rfc1952.html>
663
664 The zlib compression library was written by Jean-loup Gailly
665 "gzip@prep.ai.mit.edu" and Mark Adler "madler@alumni.caltech.edu".
666
667 The primary site for the zlib compression library is
668 <http://www.zlib.org>.
669
670 The primary site for gzip is <http://www.gzip.org>.
671
673 This module was written by Paul Marquess, "pmqs@cpan.org".
674
676 See the Changes file.
677
679 Copyright (c) 2005-2019 Paul Marquess. All rights reserved.
680
681 This program is free software; you can redistribute it and/or modify it
682 under the same terms as Perl itself.
683
684
685
686perl v5.28.1 2019-01-05 IO::Compress::RawDeflate(3)