2 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml">
5 <title>Encode::Encoder -- Object Oriented Encoder
</title>
6 <meta http-equiv=
"content-type" content=
"text/html; charset=utf-8" />
7 <link rev=
"made" href=
"mailto:" />
10 <body style=
"background-color: white">
11 <table border=
"0" width=
"100%" cellspacing=
"0" cellpadding=
"3">
12 <tr><td class=
"block" style=
"background-color: #cccccc" valign=
"middle">
13 <big><strong><span class=
"block"> Encode::Encoder -- Object Oriented Encoder
</span></strong></big>
17 <p><a name=
"__index__"></a></p>
22 <li><a href=
"#name">NAME
</a></li>
23 <li><a href=
"#synopsis">SYNOPSIS
</a></li>
24 <li><a href=
"#abstract">ABSTRACT
</a></li>
25 <li><a href=
"#description">Description
</a></li>
28 <li><a href=
"#predefined_methods">Predefined Methods
</a></li>
29 <li><a href=
"#example__base64_transcoder">Example: base64 transcoder
</a></li>
30 <li><a href=
"#operator_overloading">Operator Overloading
</a></li>
33 <li><a href=
"#see_also">SEE ALSO
</a></li>
40 <h1><a name=
"name">NAME
</a></h1>
41 <p>Encode::Encoder -- Object Oriented Encoder
</p>
45 <h1><a name=
"synopsis">SYNOPSIS
</a></h1>
48 # Encode::encode(
"ISO-
8859-
1", $data);
49 Encode::Encoder-
>new($data)-
>iso_8859_1; # OOP way
51 use Encode::Encoder qw(encoder);
52 encoder($data)-
>iso_8859_1;
54 encoder($data)-
>iso_8859_1-
>base64; # provided base64() is defined
55 # you can use it as a decoder as well
56 encoder($base64)-
>bytes('base64')-
>latin1;
58 print encoder($data)-
>utf8-
>latin1; # prints the string in latin1
60 encoder(
"\x{abcd}\x{ef}g
")-
>utf8 ==
6; # true. bytes::length($data)
</pre>
64 <h1><a name=
"abstract">ABSTRACT
</a></h1>
65 <p><strong>Encode::Encoder
</strong> allows you to use Encode in an object-oriented
66 style. This is not only more intuitive than a functional approach,
67 but also handier when you want to stack encodings. Suppose you want
68 your UTF-
8 string converted to Latin1 then Base64: you can simply say
</p>
70 my $base64 = encoder($utf8)-
>latin1-
>base64;
</pre>
73 my $latin1 = encode(
"latin1
", $utf8);
74 my $base64 = encode_base64($utf8);
</pre>
75 <p>or the lazier and more convoluted
</p>
77 my $base64 = encode_base64(encode(
"latin1
", $utf8));
</pre>
81 <h1><a name=
"description">Description
</a></h1>
82 <p>Here is how to use this module.
</p>
85 <p>There are at least two instance variables stored in a hash reference,
86 {data} and {encoding}.
</p>
89 <p>When there is no method, it takes the method name as the name of the
90 encoding and encodes the instance
<em>data
</em> with
<em>encoding
</em>. If successful,
91 the instance
<em>encoding
</em> is set accordingly.
</p>
94 <p>You can retrieve the result via -
>data but usually you don't have to
95 because the stringify operator (``'') is overridden to do exactly that.
</p>
100 <h2><a name=
"predefined_methods">Predefined Methods
</a></h2>
101 <p>This module predefines the methods below:
</p>
103 <dt><strong><a name=
"item_new">$e = Encode::Encoder-
>new([$data, $encoding]);
</a></strong>
106 <p>returns an encoder object. Its data is initialized with $data if
107 present, and its encoding is set to $encoding if present.
</p>
110 <p>When $encoding is omitted, it defaults to utf8 if $data is already in
111 utf8 or ``'' (empty string) otherwise.
</p>
114 <dt><strong><a name=
"item_encoder"><code>encoder()
</code></a></strong>
117 <p>is an alias of Encode::Encoder-
>new(). This one is exported on demand.
</p>
120 <dt><strong><a name=
"item_data">$e-
><code>data([$data])
</code></a></strong>
123 <p>When $data is present, sets the instance data to $data and returns the
124 object itself. Otherwise, the current instance data is returned.
</p>
127 <dt><strong><a name=
"item_encoding">$e-
><code>encoding([$encoding])
</code></a></strong>
130 <p>When $encoding is present, sets the instance encoding to $encoding and
131 returns the object itself. Otherwise, the current instance encoding is
135 <dt><strong><a name=
"item_bytes">$e-
><code>bytes([$encoding])
</code></a></strong>
138 <p>decodes instance data from $encoding, or the instance encoding if
139 omitted. If the conversion is successful, the instance encoding
140 will be set to ``''.
</p>
143 <p>The name
<em>bytes
</em> was deliberately picked to avoid namespace tainting
144 -- this module may be used as a base class so method names that appear
145 in Encode::Encoding are avoided.
</p>
151 <h2><a name=
"example__base64_transcoder">Example: base64 transcoder
</a></h2>
152 <p>This module is designed to work with
<a href=
"file://C|\msysgit\mingw\html/lib/Encode/Encoding.html">the Encode::Encoding manpage
</a>.
153 To make the Base64 transcoder example above really work, you could
154 write a module like this:
</p>
156 package Encode::Base64;
157 use base 'Encode::Encoding';
158 __PACKAGE__-
>Define('base64');
161 my ($obj, $data) = @_;
162 return encode_base64($data);
165 my ($obj, $data) = @_;
166 return decode_base64($data);
170 <p>And your caller module would be something like this:
</p>
173 use Encode::Base64;
</pre>
175 # now you can really do the following
</pre>
177 encoder($data)-
>iso_8859_1-
>base64;
178 encoder($base64)-
>bytes('base64')-
>latin1;
</pre>
181 <h2><a name=
"operator_overloading">Operator Overloading
</a></h2>
182 <p>This module overloads two operators, stringify (``'') and numify (
0+).
</p>
183 <p>Stringify dumps the data inside the object.
</p>
184 <p>Numify returns the number of bytes in the instance data.
</p>
185 <p>They come in handy when you want to print or find the size of data.
</p>
189 <h1><a name=
"see_also">SEE ALSO
</a></h1>
190 <p><a href=
"file://C|\msysgit\mingw\html/lib/Encode.html">the Encode manpage
</a>,
191 <a href=
"file://C|\msysgit\mingw\html/lib/Encode/Encoding.html">the Encode::Encoding manpage
</a></p>
192 <table border=
"0" width=
"100%" cellspacing=
"0" cellpadding=
"3">
193 <tr><td class=
"block" style=
"background-color: #cccccc" valign=
"middle">
194 <big><strong><span class=
"block"> Encode::Encoder -- Object Oriented Encoder
</span></strong></big>