  | 
 
 
 
 |  
 |  | 
 
  
    | Compress::Raw::Lzma(3) | 
    User Contributed Perl Documentation | 
    Compress::Raw::Lzma(3) | 
   
 
Compress::Raw::Lzma - Low-Level Perl Interface to lzma compression
    library 
    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 lzma object: $status\n";
    my ($lz, $status) = new Compress::Raw::Lzma::AutoDecoder [OPTS]
        or die "Cannot create lzma object: $status\n";
    my ($lz, $status) = new Compress::Raw::Lzma::StreamDecoder [OPTS]
        or die "Cannot create lzma object: $status\n";
    my ($lz, $status) = new Compress::Raw::Lzma::RawDecoder [OPTS]
        or die "Cannot create lzma object: $status\n";
    $status = $lz->code($input, $output);
    my $version = Compress::Raw::Lzma::lzma_version_number();
    my $version = Compress::Raw::Lzma::lzma_version_string();
"Compress::Raw::Lzma" provides
    an interface to the in-memory compression/uncompression functions from the
    lzma compression library. 
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. 
There are four compression interfaces available in this
  module. 
  - Compress::Raw::Lzma::EasyEncoder
 
  
  - Compress::Raw::Lzma::AloneEncoder
 
  
  - Compress::Raw::Lzma::StreamEncoder
 
  
  - Compress::Raw::Lzma::RawEncoder
 
  
 
Creates a new xz compression 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: 
  - Preset =>
    $preset
 
  - Used to choose the compression preset.
    
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". 
   
  - Extreme =>
    0|1
 
  - Makes the compression a lot slower, but a small compression gain.
    
Defaults to 0. 
   
  - Check =>
    $check
 
  - Used to specify the integrity check used in the xz data stream. Valid
      values are "LZMA_CHECK_NONE",
      "LZMA_CHECK_CRC32",
      "LZMA_CHECK_CRC64",
      "LZMA_CHECK_SHA256".
    
Defaults to
        "LZMA_CHECK_CRC32". 
   
  - AppendOutput
    => 0|1
 
  - Controls whether the compressed data is appended to the output buffer in
      the "code" and
      "flush" methods.
    
Defaults to 0. (Note in versions of this module prior to 2.072
        the default value was incorrectly documented as 1). 
   
  - BufSize =>
    $number
 
  - Sets the initial size for the output buffer used by the
      "$d->code" method. If the buffer has
      to be reallocated to increase the size, it will grow in increments of
      "Bufsize".
    
Defaults to 16k. 
   
 
Creates a legacy lzma compression object. This format is
    also know as lzma_alone. 
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: 
  - Filter =>
    $filter
 
  - The  $filter  option must be an object of type
      "Lzma::Filter::Lzma1". See
      "Lzma::Filter::Lzma" in Compress::Raw::Lzma for a definition of
      "Lzma::Filter::Lzma1".
    
If this option is not present an
        "Lzma::Filter::Lzma1" object with
        default values will be used. 
   
  - AppendOutput
    => 0|1
 
  - Controls whether the compressed data is appended to the output buffer in
      the "code" and
      "flush" methods.
    
Defaults to 0. (Note in versions of this module prior to 2.072
        the default value was incorrectly documented as 1). 
   
  - BufSize =>
    $number
 
  - Sets the initial size for the output buffer used by the
      "$d->code" method. If the buffer has
      to be reallocated to increase the size, it will grow in increments of
      "Bufsize".
    
Defaults to 16k. 
   
 
Creates a xz compression 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: 
  - Filter =>
    $filter
 
  
  - Filter =>
    [$filter1, $filter2,...]
 
  - This option is used to change the bahaviour of the StreamEncoder by
      applying between one and
      "LZMA_FILTERS_MAX" filters to the data
      stream during compression. See "Filters" for more details on the
      available filters.
    
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. 
   
  - Check =>
    $check
 
  - Used to specify the integrity check used in the xz data stream. Valid
      values are "LZMA_CHECK_NONE",
      "LZMA_CHECK_CRC32",
      "LZMA_CHECK_CRC64",
      "LZMA_CHECK_SHA256".
    
Defaults to
        "LZMA_CHECK_CRC32". 
   
  - AppendOutput
    => 0|1
 
  - Controls whether the compressed data is appended to the output buffer in
      the "code" and
      "flush" methods.
    
Defaults to 0. (Note in versions of this module prior to 2.072
        the default value was incorrectly documented as 1). 
   
  - BufSize =>
    $number
 
  - Sets the initial size for the output buffer used by the
      "$d->code" method. If the buffer has
      to be reallocated to increase the size, it will grow in increments of
      "Bufsize".
    
Defaults to 16k. 
   
 
Low level access to lzma. 
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: 
  - Filter =>
    $filter
 
  
  - Filter =>
    [$filter1, $filter2,...]
 
  - This option is used to change the bahaviour of the RawEncoder by applying
      between one and "LZMA_FILTERS_MAX"
      filters to the data stream during compression. See "Filters" for
      more details on the available filters.
    
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. 
   
  - AppendOutput
    => 0|1
 
  - Controls whether the compressed data is appended to the output buffer in
      the "code" and
      "flush" methods.
    
Defaults to 0. (Note in versions of this module prior to 2.072
        the default value was incorrectly documented as 1). 
   
  - BufSize =>
    $number
 
  - Sets the initial size for the output buffer used by the
      "$d->code" method. If the buffer has
      to be reallocated to increase the size, it will grow in increments of
      "Bufsize".
    
Defaults to 16k. 
   
  - ForZip =>
    1/0
 
  - This boolean option is used to enable prefixing the compressed data stream
      with an encoded copy of the filter properties.
    
Defaults to 0. 
   
 
$status = $lz->code($input, $output)
Reads the contents of $input, compresses
    it and writes the compressed data to $output. 
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. 
$status = $lz->flush($output, LZMA_FINISH);
Flushes any pending compressed data to
    $output. By default it terminates the compressed
    data stream. 
Returns "LZMA_OK" on success and
    an "lzma" error code on failure. 
There are four uncompression interfaces available in this
  module. 
  - Compress::Raw::Lzma::AutoDecoder
 
  
  - Compress::Raw::Lzma::AloneDecoder
 
  
  - Compress::Raw::Lzma::StreamDecoder
 
  
  - Compress::Raw::Lzma::RawDecoder
 
  
 
Create an object that can uncompress any of the compressed data
    streams that can be created by this module. 
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: 
  - -MemLimit
 
  - The number of bytes to use when uncompressing.
    
Default is unlimited. 
   
  - -Bufsize
 
  - Sets the initial size for the output buffer used by the
      "$i->code" method. If the output
      buffer in this method has to be reallocated to increase the size, it will
      grow in increments of "Bufsize".
    
Default is 16k. 
   
  - -AppendOutput
 
  - This option controls how data is written to the output buffer by the
      "$i->code" method.
    
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. 
   
  - -ConsumeInput
 
  - If set to true, this option will remove compressed data from the input
      buffer of the "$i->code" method as
      the uncompression progresses.
    
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. 
   
  - -LimitOutput
 
  - The "LimitOutput" option changes the
      behavior of the "$i->code" method so
      that the amount of memory used by the output buffer can be limited.
    
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. 
   
 
Create an object that can uncompress an lzma_alone data
  stream. 
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: 
  - -MemLimit
 
  - The number of bytes to use when uncompressing.
    
Default is unlimited. 
   
  - -Bufsize
 
  - Sets the initial size for the output buffer used by the
      "$i->code" method. If the output
      buffer in this method has to be reallocated to increase the size, it will
      grow in increments of "Bufsize".
    
Default is 16k. 
   
  - -AppendOutput
 
  - This option controls how data is written to the output buffer by the
      "$i->code" method.
    
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. 
   
  - -ConsumeInput
 
  - If set to true, this option will remove compressed data from the input
      buffer of the "$i->code" method as
      the uncompression progresses.
    
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. 
   
  - -LimitOutput
 
  - The "LimitOutput" option changes the
      behavior of the "$i->code" method so
      that the amount of memory used by the output buffer can be limited.
    
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. 
   
 
Uncompresses $input and writes the
    uncompressed data to $output. 
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. 
TODO - more here 
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. 
The "Lzma::Filter::Lzma" class
    is used to... TODO - more here 
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. 
  - DictSize =>
    $value
 
  - Dictionary size in bytes. This controls how many bytes of the recently
      processed uncompressed data is kept in memory. The size of the dictionary
      must be at least "LZMA_DICT_SIZE_MIN".
    
Defaults to
        "LZMA_DICT_SIZE_DEFAULT". 
   
  - PresetDict =>
    $dict
 
  - Provide an initial dictionary. This value is used to initialize the LZ77
      history window.
    
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. 
   
  - Lc => $value
 
  - Number of literal context bits.
    
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". 
   
  - Lp => $value
 
  - Number of literal position bits.
    
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". 
   
  - Pb => $value
 
  - Number of position bits
    
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". 
   
  - Mode => $value
 
  - The Compression Mode. Valid values are
      "LZMA_MODE_FAST" and
      "LZMA_MODE_NORMAL".
    
Defaults to
        "LZMA_MODE_NORMAL". 
   
  - Nice => $value
 
  - Nice length of a match
    
Defaults to 64. 
   
  - Mf => $value
 
  - Defines which Match Finder to use. Valid values are
      "LZMA_MF_HC3"
      "LZMA_MF_HC4",
      "LZMA_MF_BT2"
      "LZMA_MF_BT3" and
      "LZMA_MF_BT4".
    
Defaults to
      "LZMA_MF_BT4". 
   
  - Depth => $value
 
  - Maximum search depth in the match finder.
    
Defaults to 0. 
   
 
Usage is 
    Lzma::Filter::Delta [OPTS]
 
  - Type => $type
 
  - Defines the type of Delta calculation. The only available type (and
      therefore the default) is
      "LZMA_DELTA_TYPE_BYTE",
 
  - Distance =>
    $value
 
  - Defines the Delta Distance. $value must be a
      number between "LZMA_DELTA_DIST_MIN" and
      "LZMA_DELTA_DIST_MAX".
    
Default is
        "LZMA_DELTA_DIST_MIN". 
   
 
my $version =
  Compress::Raw::Lzma::lzma_version_number();
Returns the version of the underlying lzma library this module is
    using at run-time as a number. 
my $version =
  Compress::Raw::Lzma::lzma_version_string();
Returns the version of the underlying lzma library this module is
    using at run-time as a string. 
my $version = Compress::Raw::Lzma::LZMA_VERSION();
Returns the version of the underlying lzma library this module was
    using at compile-time as a number. 
my $version =
  Compress::Raw::Lzma::LZMA_VERSION_STRING();
Returns the version of the underlying lzma library this module was
    using at compile-time as a string. 
The following lzma constants are exported by this module 
TODO - more here 
General feedback/questions/bug reports should be sent to
    <https://github.com/pmqs/Compress-Raw-Lzma/issues> (preferred) or
    <https://rt.cpan.org/Public/Dist/Display.html?Name=Compress-Raw-Lzma>. 
Compress::Zlib, IO::Compress::Gzip, IO::Uncompress::Gunzip,
    IO::Compress::Deflate, IO::Uncompress::Inflate, IO::Compress::RawDeflate,
    IO::Uncompress::RawInflate, IO::Compress::Bzip2, IO::Uncompress::Bunzip2,
    IO::Compress::Lzma, IO::Uncompress::UnLzma, IO::Compress::Xz,
    IO::Uncompress::UnXz, IO::Compress::Lzip, IO::Uncompress::UnLzip,
    IO::Compress::Lzop, IO::Uncompress::UnLzop, IO::Compress::Lzf,
    IO::Uncompress::UnLzf, IO::Compress::Zstd, IO::Uncompress::UnZstd,
    IO::Uncompress::AnyInflate, IO::Uncompress::AnyUncompress 
IO::Compress::FAQ 
File::GlobMapper, Archive::Zip, Archive::Tar, IO::Zlib 
This module was written by Paul Marquess,
    "pmqs@cpan.org". 
Copyright (c) 2005-2024 Paul Marquess. All rights reserved. 
This program is free software; you can redistribute it and/or
    modify it under the same terms as Perl itself. 
 
 
  Visit the GSP FreeBSD Man Page Interface. Output converted with ManDoc.
  |