ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/staticperl/perl/lib/DBM_Filter/encode.pm
Revision: 1.1
Committed: Thu Jun 30 14:27:10 2005 UTC (21 years, 4 months ago) by root
Branch: MAIN
CVS Tags: PERL-5-8-7, HEAD
Branch point for: PERL
Log Message:
*** empty log message ***

File Contents

# User Rev Content
1 root 1.1 package DBM_Filter::encode ;
2    
3     use strict;
4     use warnings;
5     use Carp;
6    
7     our $VERSION = '0.01';
8    
9     BEGIN
10     {
11     eval { require Encode; };
12    
13     croak "Encode module not found.\n"
14     if $@;
15     }
16    
17    
18     sub Filter
19     {
20     my $encoding_name = shift || "utf8";
21    
22     my $encoding = Encode::find_encoding($encoding_name) ;
23    
24     croak "Encoding '$encoding_name' is not available"
25     unless $encoding;
26    
27     return {
28     Store => sub {
29     $_ = $encoding->encode($_)
30     if defined $_ ;
31     },
32     Fetch => sub {
33     $_ = $encoding->decode($_)
34     if defined $_ ;
35     }
36     } ;
37     }
38    
39     1;
40    
41     __END__
42    
43     =head1 DBM_Filter::encode
44    
45     =head1 SYNOPSIS
46    
47     use SDBM_File; # or DB_File, or GDBM_File, or NDBM_File, or ODBM_File
48     use DBM_Filter ;
49    
50     $db = tie %hash, ...
51     $db->Filter_Push('encode' => 'iso-8859-16');
52    
53     =head1 DESCRIPTION
54    
55     This DBM filter allows you to choose the character encoding will be
56     store in the DBM file. The usage is
57    
58     $db->Filter_Push('encode' => ENCODING);
59    
60     where "ENCODING" must be a valid encoding name that the Encode module
61     recognises.
62    
63     A fatal error will be thrown if:
64    
65     =over 5
66    
67     =item 1
68    
69     The Encode module is not available.
70    
71     =item 2
72    
73     The encoding requested is not supported by the Encode module.
74    
75     =back
76    
77     =head1 SEE ALSO
78    
79     L<DBM_Filter>, L<perldbmfilter>, L<Encode>
80    
81     =head1 AUTHOR
82    
83     Paul Marquess pmqs@cpan.org
84