use Compress::Raw::Lzma ; # Encoders my ($lz, $status) = new Compress::Raw::Lzma::EasyEncoder [OPTS] or die "Cannot create lzma object: $status\n"; my ($lz, $status) = new Compress::Raw::Lzma::AloneEncoder [OPTS] or die "Cannot create lzma object: $status\n"; my ($lz, $status) = new Compress::Raw::Lzma::StreamEncoder [OPTS] or die "Cannot create lzma object: $status\n"; my ($lz, $status) = new Compress::Raw::Lzma::RawEncoder [OPTS] or die "Cannot create lzma object: $status\n"; $status = $lz->code($input, $output); $status = $lz->flush($output); # Decoders my ($lz, $status) = new Compress::Raw::Lzma::AloneDecoder [OPTS] or die "Cannot create bunzip2 object: $status\n"; my ($lz, $status) = new Compress::Raw::Lzma::AutoDecoder [OPTS] or die "Cannot create bunzip2 object: $status\n"; my ($lz, $status) = new Compress::Raw::Lzma::StreamDecoder [OPTS] or die "Cannot create bunzip2 object: $status\n"; my ($lz, $status) = new Compress::Raw::Lzma::RawDecoder [OPTS] or die "Cannot create bunzip2 object: $status\n"; $status = $lz->code($input, $output); my $version = Compress::Raw::Lzma::lzma_version_number(); my $version = Compress::Raw::Lzma::lzma_version_string();
Although the primary purpose for the existence of "Compress::Raw::Lzma" is for use by the "IO::Compress::Lzma", "IO::Uncompress::UnLzma", "IO::Compress::Xz" and "IO::Uncompress::UnXz" modules, it can be used on its own for simple compression/uncompression tasks.
There are two functions, called "code" and "flush", used in all the compression and uncompression interfaces defined in this module. By default both of these functions overwrites any data stored in its output buffer parameter. If you want to compress/uncompress to a single buffer, and have "code" and "flush" append to that buffer, enable the "AppendOutput" option when you create the compression/decompression object.
If successful, it will return the initialised compression object, $z and a $status of "LZMA_OK" in a list context. In scalar context it returns the deflation object, $z, only.
If not successful, the returned compression object, $z, will be undef and $status will hold the an lzma error code.
Below is a list of the valid options:
Valid values are 0-9 and "LZMA_PRESET_DEFAULT".
0 is the fastest compression with the lowest memory usage and the lowest compression.
9 is the slowest compression with the highest memory usage but with the best compression.
Defaults to "LZMA_PRESET_DEFAULT".
Defaults to 0.
Defaults to "LZMA_CHECK_CRC32".
Defaults to 0. (Note in versions of this module prior to 2.072 the default value was incorrectly documented as 1).
Defaults to 16k.
If successful, it will return the initialised compression object, $z and a $status of "LZMA_OK" in a list context. In scalar context it returns the deflation object, $z, only.
If not successful, the returned compression object, $z, will be undef and $status will hold the an lzma error code.
Below is a list of the valid options:
If this option is not present an "Lzma::Filter::Lzma1" object with default values will be used.
Defaults to 0. (Note in versions of this module prior to 2.072 the default value was incorrectly documented as 1).
Defaults to 16k.
If successful, it will return the initialised compression object, $z and a $status of "LZMA_OK" in a list context. In scalar context it returns the deflation object, $z, only.
If not successful, the returned compression object, $z, will be undef and $status will hold the an lzma error code.
Below is a list of the valid options:
If this option is present it must either contain a single "Lzma::Filter::Lzma" filter object or an array reference containing between one and "LZMA_FILTERS_MAX" filter objects.
If this option is not present an "Lzma::Filter::Lzma2" object with default values will be used.
Defaults to "LZMA_CHECK_CRC32".
Defaults to 0. (Note in versions of this module prior to 2.072 the default value was incorrectly documented as 1).
Defaults to 16k.
If successful, it will return the initialised compression object, $z and a $status of "LZMA_OK" in a list context. In scalar context it returns the deflation object, $z, only.
If not successful, the returned compression object, $z, will be undef and $status will hold the an lzma error code.
Below is a list of the valid options:
If this option is present it must either contain a single "Lzma::Filter::Lzma" filter object or an array reference containing between one and "LZMA_FILTERS_MAX" filter objects.
If this option is not present an "Lzma::Filter::Lzma2" object with default values will be used.
Defaults to 0. (Note in versions of this module prior to 2.072 the default value was incorrectly documented as 1).
Defaults to 16k.
Defaults to 0.
Returns "LZMA_OK" on success and an "lzma" error code on failure.
If "appendOutput" is enabled in the constructor for the lzma object, the compressed data will be appended to $output. If not enabled, $output will be truncated before the compressed data is written to it.
Returns "LZMA_OK" on success and an "lzma" error code on failure.
If successful, it will return the initialised uncompression object, $z and a $status of "LZMA_OK" in a list context. In scalar context it returns the deflation object, $z, only.
If not successful, the returned uncompression object, $z, will be undef and $status will hold the an lzma error code.
Below is a list of the valid options:
Default is unlimited.
Default is 16k.
If the option is set to false, the output buffer in the "$i->code" method will be truncated before uncompressed data is written to it.
If the option is set to true, uncompressed data will be appended to the output buffer by the "$i->code" method.
This option defaults to false.
This option can be useful when you are processing compressed data that is embedded in another file/buffer. In this case the data that immediately follows the compressed stream will be left in the input buffer.
This option defaults to true.
When "LimitOutput" is used the size of the output buffer used will either be the value of the "Bufsize" option or the amount of memory already allocated to $output, whichever is larger. Predicting the output size available is tricky, so don't rely on getting an exact output buffer size.
When "LimitOutout" is not specified "$i->code" will use as much memory as it takes to write all the uncompressed data it creates by uncompressing the input buffer.
If "LimitOutput" is enabled, the "ConsumeInput" option will also be enabled.
This option defaults to false.
See ``The LimitOutput option'' for a discussion on why "LimitOutput" is needed and how to use it.
If successful, it will return the initialised uncompression object, $z and a $status of "LZMA_OK" in a list context. In scalar context it returns the deflation object, $z, only.
If not successful, the returned uncompression object, $z, will be undef and $status will hold the an lzma error code.
Below is a list of the valid options:
Default is unlimited.
Default is 16k.
If the option is set to false, the output buffer in the "$i->code" method will be truncated before uncompressed data is written to it.
If the option is set to true, uncompressed data will be appended to the output buffer by the "$i->code" method.
This option defaults to false.
This option can be useful when you are processing compressed data that is embedded in another file/buffer. In this case the data that immediately follows the compressed stream will be left in the input buffer.
This option defaults to true.
When "LimitOutput" is used the size of the output buffer used will either be the value of the "Bufsize" option or the amount of memory already allocated to $output, whichever is larger. Predicting the output size available is tricky, so don't rely on getting an exact output buffer size.
When "LimitOutout" is not specified "$i->code" will use as much memory as it takes to write all the uncompressed data it creates by uncompressing the input buffer.
If "LimitOutput" is enabled, the "ConsumeInput" option will also be enabled.
This option defaults to false.
See ``The LimitOutput option'' for a discussion on why "LimitOutput" is needed and how to use it.
Returns "LZMA_OK" if the uncompression was successful, but the end of the compressed data stream has not been reached. Returns "LZMA_STREAM_END" on successful uncompression and the end of the compression stream has been reached.
If "consumeInput" is enabled in the constructor for the lzma object, $input will have all compressed data removed from it after uncompression. On "LZMA_OK" return this will mean that $input will be an empty string; when "LZMA_STREAM_END" $input will either be an empty string or will contain whatever data immediately followed the compressed data stream.
If "appendOutput" is enabled in the constructor for the lzma object, the uncompressed data will be appended to $output. If not enabled, $output will be truncated before the uncompressed data is written to it.
A number of the Lzma compression interfaces (namely "Compress::Raw::Lzma::StreamEncoder" & "Compress::Raw::Lzma::AloneEncoder") and the raw lzma uncompression interface make use of filters. These filters are used to change the behaviour of compression (and raw uncompression).
All Lzma Filters are sub-classed from the "Lzma::Filter" base-class.
There are two subclasses of "Lzma::Filter::Lzma", namely "Lzma::Filter::Lzma1" and "Lzma::Filter::Lzma2".
The former is typically used with "Compress::Raw::Lzma::AloneEncoder". The latter with "Compress::Raw::Lzma::StreamEncoder".
When using Lzma filters an "Lzma::Filter::Lzma" must be included and it must be the last filter in the chain. There can only be one "Lzma::Filter::Lzma" filter in any filter chain.
The "Lzma::Filter::Lzma" construction takes the following options.
Defaults to "LZMA_DICT_SIZE_DEFAULT".
This feature only works correctly with raw encoding and decoding. You may not be able to decode other formats that have been encoded with a preset dictionary.
$dict should contain typical strings that occur in the files being compressed, with the most probably strings near the end fo the preset dictionary.
If $dict is larger than "DictSize", only the last "DictSize" bytes are processed.
How many of the highest bits of the previous uncompressed eight-bit byte (also known as `literal') are taken into account when predicting the bits of the next literal.
$value must be a number between "LZMA_LCLP_MIN" and "LZMA_LCLP_MAX".
Note the sum of the "Lc" and "Lp" options cannot exceed 4.
Defaults to "LZMA_LC_DEFAULT".
How many of the lowest bits of the current position (number of bytes from the beginning of the uncompressed data) in the uncompressed data is taken into account when predicting the bits of the next literal (a single eight-bit byte).
Defaults to "LZMA_LP_DEFAULT".
How many of the lowest bits of the current position in the uncompressed data is taken into account when estimating probabilities of matches. A match is a sequence of bytes for which a matching sequence is found from the dictionary and thus can be stored as distance-length pair.
$value must be a number between "LZMA_PB_MIN" and "LZMA_PB_MAX".
Defaults to "LZMA_PB_DEFAULT".
Defaults to "LZMA_MODE_NORMAL".
Defaults to 64.
Defaults to "LZMA_MF_BT4".
Defaults to 0.
Lzma::Filter::Delta [OPTS]
Default is "LZMA_DELTA_DIST_MIN".
IO::Compress::FAQ
File::GlobMapper, Archive::Zip, Archive::Tar, IO::Zlib
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.