The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 10;

use Unicode::Escape;

my $escaper;

$escaper = Unicode::Escape->new("\x{e3}\x{81}\x{82}\x{e3}\x{81}\x{84}\x{e3}\x{81}\x{86}\x{e3}\x{81}\x{88}\x{e3}\x{81}\x{8a}");
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'default');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'default');

$escaper = Unicode::Escape->new("\x{e3}\x{81}\x{82}\x{e3}\x{81}\x{84}\x{e3}\x{81}\x{86}\x{e3}\x{81}\x{88}\x{e3}\x{81}\x{8a}", 'utf8');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'utf8');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'utf8');

$escaper = Unicode::Escape->new("\x{82}\x{a0}\x{82}\x{a2}\x{82}\x{a4}\x{82}\x{a6}\x{82}\x{a8}", 'shiftjis');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'shiftjis');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'shiftjis');

$escaper = Unicode::Escape->new("\x{a4}\x{a2}\x{a4}\x{a4}\x{a4}\x{a6}\x{a4}\x{a8}\x{a4}\x{aa}", 'euc-jp');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'euc-jp');
is('\\u3042\\u3044\\u3046\\u3048\\u304a', $escaper->escape, 'euc-jp');

$escaper = Unicode::Escape->new("abscefghijklmnoparstuvwxyz1234567890-^\\_:;!\x{a4}\x{a2}abscefghijklmnoparstuvwxyz1234567890-^\\_:;!\x{a4}\x{a4}\x{a4}\x{a6}\x{a4}\x{a8}\x{a4}\x{aa}abscefghijklmnoparstuvwxyz1234567890-^\\_:;!", 'euc-jp');
is('abscefghijklmnoparstuvwxyz1234567890-^\\_:;!\\u3042abscefghijklmnoparstuvwxyz1234567890-^\\_:;!\\u3044\\u3046\\u3048\\u304aabscefghijklmnoparstuvwxyz1234567890-^\\_:;!', $escaper->escape, 'euc-jp');
is('abscefghijklmnoparstuvwxyz1234567890-^\\_:;!\\u3042abscefghijklmnoparstuvwxyz1234567890-^\\_:;!\\u3044\\u3046\\u3048\\u304aabscefghijklmnoparstuvwxyz1234567890-^\\_:;!', $escaper->escape, 'euc-jp');