Compression-Util
view release on metacpan or search on metacpan
```perl
# Compression
my $enc = do {
my ($literals, $distances, $lengths, $matches) = lz77_encode($str);
bwt_compress(symbols2string($literals))
. fibonacci_encode($lengths)
. create_huffman_entry($matches)
. obh_encode($distances, \&mrl_compress_symbolic);
};
# Decompression
my $dec = do {
open my $fh, '<:raw', \$enc;
my $literals = string2symbols(bwt_decompress($fh));
my $lengths = fibonacci_decode($fh);
my $matches = decode_huffman_entry($fh);
my $distances = obh_decode($fh, \&mrl_decompress_symbolic);
lz77_decode($literals, $distances, $lengths, $matches);
};
```
# REFERENCES
- DEFLATE Compressed Data Format Specification
* [https://datatracker.ietf.org/doc/html/rfc1951](https://datatracker.ietf.org/doc/html/rfc1951)
- GZIP file format specification
* [https://datatracker.ietf.org/doc/html/rfc1952](https://datatracker.ietf.org/doc/html/rfc1952)
- ZLIB Compressed Data Format Specification
* [https://datatracker.ietf.org/doc/html/rfc1950](https://datatracker.ietf.org/doc/html/rfc1950)
- BZIP2 Format Specification, by Joe Tsai:
* [https://github.com/dsnet/compress/blob/master/doc/bzip2-format.pdf](https://github.com/dsnet/compress/blob/master/doc/bzip2-format.pdf)
- LZ4 Frame format
* [https://github.com/lz4/lz4/blob/dev/doc/lz4\_Frame\_format.md](https://github.com/lz4/lz4/blob/dev/doc/lz4_Frame_format.md)
- LZ4 Block format
* [https://github.com/lz4/lz4/blob/dev/doc/lz4\_Block\_format.md](https://github.com/lz4/lz4/blob/dev/doc/lz4_Block_format.md)
- Data Compression (Summer 2023) - Lecture 4 - The Unix 'compress' Program:
* [https://youtube.com/watch?v=1cJL9Va80Pk](https://youtube.com/watch?v=1cJL9Va80Pk)
- Data Compression (Summer 2023) - Lecture 5 - Basic Techniques:
* [https://youtube.com/watch?v=TdFWb8mL5Gk](https://youtube.com/watch?v=TdFWb8mL5Gk)
- Data Compression (Summer 2023) - Lecture 11 - DEFLATE (gzip):
* [https://youtube.com/watch?v=SJPvNi4HrWQ](https://youtube.com/watch?v=SJPvNi4HrWQ)
- Data Compression (Summer 2023) - Lecture 12 - The Burrows-Wheeler Transform (BWT):
* [https://youtube.com/watch?v=rQ7wwh4HRZM](https://youtube.com/watch?v=rQ7wwh4HRZM)
- Data Compression (Summer 2023) - Lecture 13 - BZip2:
* [https://youtube.com/watch?v=cvoZbBZ3M2A](https://youtube.com/watch?v=cvoZbBZ3M2A)
- Data Compression (Summer 2023) - Lecture 15 - Infinite Precision in Finite Bits:
* [https://youtube.com/watch?v=EqKbT3QdtOI](https://youtube.com/watch?v=EqKbT3QdtOI)
- Information Retrieval WS 17/18, Lecture 4: Compression, Codes, Entropy:
* [https://youtube.com/watch?v=A\_F94FV21Ek](https://youtube.com/watch?v=A_F94FV21Ek)
- COMP526 7-5 SS7.4 Run length encoding:
* [https://youtube.com/watch?v=3jKLjmV1bL8](https://youtube.com/watch?v=3jKLjmV1bL8)
- COMP526 Unit 7-6 2020-03-24 Compression - Move-to-front transform:
* [https://youtube.com/watch?v=Q2pinaj3i9Y](https://youtube.com/watch?v=Q2pinaj3i9Y)
- Basic arithmetic coder in C++:
* [https://github.com/billbird/arith32](https://github.com/billbird/arith32)
# REPOSITORY
- GitHub: [https://github.com/trizen/Compression-Util](https://github.com/trizen/Compression-Util)
# BUGS AND LIMITATIONS
Please report any bugs or feature requests to: [https://github.com/trizen/Compression-Util](https://github.com/trizen/Compression-Util).
# AUTHOR
Daniel "Trizen" Èuteu
# ACKNOWLEDGEMENTS
Special thanks to professor Bill Bird for the awesome YouTube lectures on data compression.
# LICENSE
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself, either Perl version 5.38.2 or,
at your option, any later version of Perl 5 you may have available.
( run in 0.595 second using v1.01-cache-2.11-cpan-39bf76dae61 )