You are viewing the version of this documentation from Perl 5.42.1-RC1. This is a development version of Perl.

CONTENTS

NAME

Encode::Encoder -- Object Oriented Encoder

SYNOPSIS

use Encode::Encoder;
# Encode::encode("ISO-8859-1", $data); 
Encode::Encoder->new($data)->iso_8859_1; # OOP way
# shortcut
use Encode::Encoder qw(encoder);
encoder($data)->iso_8859_1;
# you can stack them!
encoder($data)->iso_8859_1->base64;  # provided base64() is defined
# you can use it as a decoder as well
encoder($base64)->bytes('base64')->latin1;
# stringified
print encoder($data)->utf8->latin1;  # prints the string in latin1
# numified
encoder("\x{abcd}\x{ef}g")->utf8 == 6; # true. bytes::length($data)

ABSTRACT

Encode::Encoder allows you to use Encode in an object-oriented style. This is not only more intuitive than a functional approach, but also handier when you want to stack encodings. Suppose you want your UTF-8 string converted to Latin1 then Base64: you can simply say

my $base64 = encoder($utf8)->latin1->base64;

instead of

my $latin1 = encode("latin1", $utf8);
my $base64 = encode_base64($utf8);

or the lazier and more convoluted

my $base64 = encode_base64(encode("latin1", $utf8));

Description

Here is how to use this module.

Predefined Methods

This module predefines the methods below:

$e = Encode::Encoder->new([$data, $encoding]);

returns an encoder object. Its data is initialized with $data if present, and its encoding is set to $encoding if present.

When $encoding is omitted, it defaults to utf8 if $data is already in utf8 or "" (empty string) otherwise.

encoder()

is an alias of Encode::Encoder->new(). This one is exported on demand.

$e->data([$data])

When $data is present, sets the instance data to $data and returns the object itself. Otherwise, the current instance data is returned.

$e->encoding([$encoding])

When $encoding is present, sets the instance encoding to $encoding and returns the object itself. Otherwise, the current instance encoding is returned.

$e->bytes([$encoding])

decodes instance data from $encoding, or the instance encoding if omitted. If the conversion is successful, the instance encoding will be set to "".

The name bytes was deliberately picked to avoid namespace tainting -- this module may be used as a base class so method names that appear in Encode::Encoding are avoided.