use warnings; use strict; use Encode qw/decode/; use Data::Dump qw/dd/; dd decode('UTF-16-BE', "\x3D\xDD\xFA", Encode::FB_CROAK|Encode::LEAVE_SRC ); dd decode('UTF-16-BE', "\xFA", Encode::FB_CROAK|Encode::LEAVE_SRC ); dd decode('UTF-16-LE', "\xD8\xFA\xDD", Encode::FB_CROAK|Encode::LEAVE_SRC ); dd decode('UTF-16-LE', "\xDD", Encode::FB_CROAK|Encode::LEAVE_SRC); __END__ "\x{3DDD}" "" "\x{FAD8}" "" #### As of version 2.12, "Encode" supports coderef values for "CHECK"; see below. NOTE: Not all encodings support this feature. Some encodings ignore the *CHECK* argument. For example, Encode::Unicode ignores *CHECK* and it always croaks on error.