package String::Multibyte::EUC; use vars qw($VERSION); $VERSION = '1.02'; +{ charset => 'EUC', regexp => '(?:[\x00-\x7F]|[\xA1-\xFE][\xA1-\xFE])', cmpchar => sub { $_[0] cmp $_[1] }, nextchar => sub { my $ch = shift; my $len = length $ch; if ($len < 1 || 2 < $len) { return undef; } elsif ($len == 1) { return $ch eq "\x7F" ? "\xA1\xA1" : chr(ord($ch)+1); } else { my($c, $d) = unpack('CC', $ch); return $ch eq "\xFE\xFE" ? undef : $d == 0xFE ? chr($c+1)."\xA1" : pack('CC', $c, $d+1); } }, }; __END__ =head1 NAME String::Multibyte::EUC - internally used by String::Multibyte for simple EUC encodings =head1 SYNOPSIS use String::Multibyte; $euc = String::Multibyte->new('EUC'); $euc_length = $euc->length($euc_string); =head1 DESCRIPTION C is used for manipulation of strings in EUC comprising C, C, and C in which a double-byte set is invoked. Byte range of single-byte characters: C<0x00..0x7F>. Leading byte range of double-byte characters: C<0xA1..0xFE>. Trailing byte range of double-byte characters: C<0xA1..0xFE>. Character order: C<0x00..0x7F>, C<0xA1A1..0xFEFE> =head1 CAVEAT C1 controls, C<0x80..0x9E>, are not supported. =head1 SEE ALSO L =cut