Parse-AFP
view release on metacpan or search on metacpan
script/afpdump.pl view on Meta::CPAN
my $octet = shift;
# sanity check
return unless defined $octet and length $octet;
# cheat 0: utf8 flag;
if ( Encode::is_utf8($octet) ) {
return find_encoding('utf8') unless $NoUTFAutoGuess;
Encode::_utf8_off($octet);
}
# cheat 1: BOM
use Encode::Unicode;
unless ($NoUTFAutoGuess) {
my $BOM = unpack('n', $octet);
return find_encoding('UTF-16')
if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe));
$BOM = unpack('N', $octet);
return find_encoding('UTF-32')
if (defined $BOM and ($BOM == 0xFeFF or $BOM == 0xFFFe0000));
if ($octet =~ /\x00/o){ # if \x00 found, we assume UTF-(16|32)(BE|LE)
my $utf;
my ($be, $le) = (0, 0);
if ($octet =~ /\x00\x00/o){ # UTF-32(BE|LE) assumed
$utf = "UTF-32";
for my $char (unpack('N*', $octet)){
$char & 0x0000ffff and $be++;
$char & 0xffff0000 and $le++;
}
}else{ # UTF-16(BE|LE) assumed
( run in 0.450 second using v1.01-cache-2.11-cpan-e9daa2b36ef )