ÿØÿà JFIF    ÿÛ „ ( %!1!%*+...983,7(-.- utf8.pm000064400000001411152343354560005777 0ustar00package DBM_Filter::utf8 ; use strict; use warnings; use Carp; our $VERSION = '0.03'; BEGIN { eval { require Encode; }; croak "Encode module not found.\n" if $@; } sub Store { $_ = Encode::encode_utf8($_) if defined $_ } sub Fetch { $_ = Encode::decode_utf8($_) if defined $_ } 1; __END__ =head1 NAME DBM_Filter::utf8 - filter for DBM_Filter =head1 SYNOPSIS use SDBM_File; # or DB_File, GDBM_File, NDBM_File, or ODBM_File use DBM_Filter; $db = tie %hash, ... $db->Filter_Push('utf8'); =head1 DESCRIPTION This Filter will ensure that all data written to the DBM will be encoded in UTF-8. This module uses the Encode module. =head1 SEE ALSO L, L, L =head1 AUTHOR Paul Marquess pmqs@cpan.org compress.pm000064400000001526152343354560006753 0ustar00package DBM_Filter::compress ; use strict; use warnings; use Carp; our $VERSION = '0.03'; BEGIN { eval { require Compress::Zlib; Compress::Zlib->import() }; croak "Compress::Zlib module not found.\n" if $@; } sub Store { $_ = compress($_) } sub Fetch { $_ = uncompress($_) } 1; __END__ =head1 NAME DBM_Filter::compress - filter for DBM_Filter =head1 SYNOPSIS use SDBM_File; # or DB_File, GDBM_File, NDBM_File, ODBM_File use DBM_Filter ; $db = tie %hash, ... $db->Filter_Push('compress'); =head1 DESCRIPTION This DBM filter will compress all data before it is written to the database and uncompressed it on reading. A fatal error will be thrown if the Compress::Zlib module is not available. =head1 SEE ALSO L, L, L =head1 AUTHOR Paul Marquess pmqs@cpan.org int32.pm000064400000001362152343354560006055 0ustar00package DBM_Filter::int32 ; use strict; use warnings; our $VERSION = '0.03'; # todo get Filter to figure endian. sub Store { $_ = 0 if ! defined $_ || $_ eq "" ; $_ = pack("i", $_); } sub Fetch { no warnings 'uninitialized'; $_ = unpack("i", $_); } 1; __END__ =head1 NAME DBM_Filter::int32 - filter for DBM_Filter =head1 SYNOPSIS use SDBM_File; # or DB_File, GDBM_File, NDBM_File, or ODBM_File use DBM_Filter ; $db = tie %hash, ... $db->Filter_Push('int32'); =head1 DESCRIPTION This DBM filter is used when interoperating with a C/C++ application that uses a C int as either the key and/or value in the DBM file. =head1 SEE ALSO L, L =head1 AUTHOR Paul Marquess pmqs@cpan.org null.pm000064400000001707152343354560006073 0ustar00package DBM_Filter::null ; use strict; use warnings; our $VERSION = '0.03'; sub Store { no warnings 'uninitialized'; $_ .= "\x00" ; } sub Fetch { no warnings 'uninitialized'; s/\x00$// ; } 1; __END__ =head1 NAME DBM_Filter::null - filter for DBM_Filter =head1 SYNOPSIS use SDBM_File; # or DB_File, GDBM_File, NDBM_File, or ODBM_File use DBM_Filter ; $db = tie %hash, ... $db->Filter_Push('null'); =head1 DESCRIPTION This filter ensures that all data written to the DBM file is null terminated. This is useful when you have a perl script that needs to interoperate with a DBM file that a C program also uses. A fairly common issue is for the C application to include the terminating null in a string when it writes to the DBM file. This filter will ensure that all data written to the DBM file can be read by the C application. =head1 SEE ALSO L, L =head1 AUTHOR Paul Marquess pmqs@cpan.org encode.pm000064400000002521152343354560006351 0ustar00package DBM_Filter::encode ; use strict; use warnings; use Carp; our $VERSION = '0.03'; BEGIN { eval { require Encode; }; croak "Encode module not found.\n" if $@; } sub Filter { my $encoding_name = shift || "utf8"; my $encoding = Encode::find_encoding($encoding_name) ; croak "Encoding '$encoding_name' is not available" unless $encoding; return { Store => sub { $_ = $encoding->encode($_) if defined $_ ; }, Fetch => sub { $_ = $encoding->decode($_) if defined $_ ; } } ; } 1; __END__ =head1 NAME DBM_Filter::encode - filter for DBM_Filter =head1 SYNOPSIS use SDBM_File; # or DB_File, GDBM_File, NDBM_File, ODBM_File use DBM_Filter ; $db = tie %hash, ... $db->Filter_Push('encode' => 'iso-8859-16'); =head1 DESCRIPTION This DBM filter allows you to choose the character encoding will be store in the DBM file. The usage is $db->Filter_Push('encode' => ENCODING); where "ENCODING" must be a valid encoding name that the Encode module recognises. A fatal error will be thrown if: =over 5 =item 1 The Encode module is not available. =item 2 The encoding requested is not supported by the Encode module. =back =head1 SEE ALSO L, L, L =head1 AUTHOR Paul Marquess pmqs@cpan.org