#!/usr/bin/perl
# LZWW compressor/decompressor + Delta coding, for compressing a given string.
use
5.036;
local
$Compression::Util::VERBOSE
= 0;
foreach
my
$file
(__FILE__, $^X) {
say
"Compressing: $file"
;
my
$str
=
do
{
local
$/;
open
my
$fh
,
'<:raw'
,
$file
;
<
$fh
>;
};
my
$enc
= lzw_compress(
$str
,
undef
, \
&delta_encode
);
my
$dec
= lzw_decompress(
$enc
,
undef
, \
&delta_decode
);
say
"Original size : "
,
length
(
$str
);
say
"Compressed size: "
,
length
(
$enc
);
if
(
$str
ne
$dec
) {
die
"Decompression error"
;
}
say
''
;
}