ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/Compress-LZF/LZF.pm
(Generate patch)

Comparing Compress-LZF/LZF.pm (file contents):
Revision 1.1 by root, Thu Sep 27 18:36:34 2001 UTC vs.
Revision 1.33 by root, Sun Aug 25 18:13:26 2013 UTC

1=head1 NAME 1=head1 NAME
2 2
3Compress::LZF - extremely leight-weight Lev-Zimpel-Free compression 3Compress::LZF - extremely light-weight Lempel-Ziv-Free compression
4 4
5=head1 SYNOPSIS 5=head1 SYNOPSIS
6 6
7 # import compress/decompress functions 7 # import compress/decompress functions
8 use Compress::LZF; 8 use Compress::LZF;
13 $original_data = decompress $compressed; 13 $original_data = decompress $compressed;
14 14
15 # import sfreeze, sfreeze_cref and sfreeze_c 15 # import sfreeze, sfreeze_cref and sfreeze_c
16 use Compress::LZF ':freeze'; 16 use Compress::LZF ':freeze';
17 17
18 $compressed = sfreeze_c [4,5,6]; 18 $serialized = sfreeze_c [4,5,6];
19 $original_data = sthaw $compressed; 19 $original_data = sthaw $serialized;
20 20
21=head1 DESCRIPTION 21=head1 DESCRIPTION
22 22
23LZF is an extremely fast (not that much slower than a pure memcpy) 23LZF is an extremely fast (not that much slower than a pure memcpy)
24compression algorithm. It is ideal for applications where you want to save 24compression algorithm. It is ideal for applications where you want to save
25I<some> space but not at the cost of speed. It is ideal for repetitive 25I<some> space but not at the cost of speed. It is ideal for repetitive
26data as well. The module is self-contained and very small (no large 26data as well. The module is self-contained and very small (no large
27library to be pulled in). It is also free, so there should be no problems 27library to be pulled in). It is also free, so there should be no problems
28incoporating this module into commercial programs. 28incorporating this module into commercial programs.
29 29
30I have no idea wether any patents in any countries apply to this 30I have no idea wether any patents in any countries apply to this
31algorithm, but at the moment it is believed that it is free from any 31algorithm, but at the moment it is believed that it is free from any
32patents. 32patents.
33 33
34=head1 FUNCTIONS 34=head1 FUNCTIONS
35 35
36=over 4
37
36=head2 $compressed = compress $uncompressed 38=item $compressed = compress $uncompressed
39
40=item $compressed = compress_best $uncompressed
37 41
38Try to compress the given string as quickly and as much as possible. In 42Try to compress the given string as quickly and as much as possible. In
39the worst case, the string can enlarge by 1 byte, but that should be the 43the worst case, the string can enlarge by 1 byte, but that should be the
40absolute exception. You can expect a 45% compression ratio on large, 44absolute exception. You can expect a 45% compression ratio on large,
41binary strings. 45binary strings.
42 46
47The C<compress_best> function uses a different algorithm that is slower
48but usually achieves better compression.
49
43=head2 $decompressed = decompress $compressed 50=item $decompressed = decompress $compressed
44 51
45Uncompress the string (compressed by C<compress>) and return the original 52Uncompress the string (compressed by C<compress>) and return the original
46data. Decompression errors can result in either broken data (there is no 53data. Decompression errors can result in either broken data (there is no
47checksum kept) or a runtime error. 54checksum kept) or a runtime error.
55
56=item $serialized = sfreeze $value (simplified freeze)
57
58=item $serialized = sfreeze_best $value
59
60Often there is the need to serialize data into a string. This function does that, by using the Storable
61module. It does the following transforms:
62
63 undef (the perl undefined value)
64 => a special cookie (undef'ness is being preserved)
65 IV, NV, PV (i.e. a _plain_ perl scalar):
66 => stays as is when it contains normal text/numbers
67 => gets serialized into a string
68 RV, undef, other funny objects (magical ones for example):
69 => data structure is freeze'd into a string.
70
71That is, it tries to leave "normal", human-readable data untouched but
72still serializes complex data structures into strings. The idea is to keep
73readability as high as possible, and in cases readability can't be helped
74anyways, it tries to compress the string.
75
76The C<sfreeze> functions will enlarge the original data one byte at most
77and will only load the Storable method when neccessary.
78
79The C<sfreeze_best> function uses a different algorithm that is slower
80but usually achieves better compression.
81
82=item $serialized = sfreeze_c $value (sfreeze and compress)
83
84=item $serialized = sfreeze_c_best $value
85
86Similar to C<sfreeze>, but always tries to C<c>ompress the resulting
87string. This still leaves most small objects (most numbers) untouched.
88
89The C<sfreeze_c> function uses a different algorithm that is slower
90but usually achieves better compression.
91
92=item $serialized = sfreeze_cr $value (sfreeze and compress references)
93
94=item $serialized = sfreeze_cr_best $value
95
96Similar to C<sfreeze>, but tries to C<c>ompress the resulting string
97unless it's a "simple" string. References for example are not "simple" and
98as such are being compressed.
99
100The C<sfreeze_cr_best> function uses a different algorithm that is slower
101but usually achieves better compression.
102
103=item $original_data = sthaw $serialized
104
105Recreate the original object from it's serialized representation. This
106function automatically detects all the different sfreeze formats.
107
108=item Compress::LZF::set_serializer $package, $freeze, $thaw
109
110Set the serialize module and functions to use. The default is "Storable",
111"Storable::net_mstore" and "Storable::mretrieve", which should be fine for
112most purposes.
113
114=back
48 115
49=head1 SEE ALSO 116=head1 SEE ALSO
50 117
51Other Compress::* modules, especially Compress::LZV1 (an older, less 118Other Compress::* modules, especially Compress::LZV1 (an older, less
52speedy module that guarentees only 1 byte overhead worst case) and 119speedy module that guarentees only 1 byte overhead worst case) and
55http://liblzf.plan9.de/ 122http://liblzf.plan9.de/
56 123
57=head1 AUTHOR 124=head1 AUTHOR
58 125
59This perl extension and the underlying liblzf were written by Marc Lehmann 126This perl extension and the underlying liblzf were written by Marc Lehmann
60<pcg@goof.com> (See also http://liblzf.plan9.de/). 127<schmorp@schmorp.de> (See also http://liblzf.plan9.de/).
61 128
62=head1 BUGS 129=head1 BUGS
63 130
64=cut 131=cut
65 132
66package Compress::LZF; 133package Compress::LZF;
67 134
68require Exporter; 135require Exporter;
69require DynaLoader; 136require DynaLoader;
70 137
71$VERSION = 0.1; 138$VERSION = '3.7';
72@ISA = qw/Exporter DynaLoader/; 139@ISA = qw/Exporter DynaLoader/;
73%EXPORT_TAGS = ( 140%EXPORT_TAGS = (
74 freeze => [qw(sfreeze sfreeze_cr sfreeze_c sthaw)], 141 freeze => [qw(sfreeze sfreeze_best sfreeze_cr sfreeze_cr_best sfreeze_c sfreeze_c_best sthaw)],
75 compress => [qw(compress decompress)], 142 compress => [qw(compress compress_best decompress)],
76); 143);
77 144
78Exporter::export_tags('compress'); 145Exporter::export_tags('compress');
79Exporter::export_ok_tags('freeze'); 146Exporter::export_ok_tags('freeze');
80 147

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines