use strict; use warnings; use Encode qw( decode ); my $s = ''; $s .= pack('v', $_) for 0..65535; for my $enc (qw( UCS-2le UTF-16le )) { printf( "%-9s %s\n", "$enc:", eval { decode($enc, $s); 'success' } || 'error' ); }