our
$VERSION
=
do
{
my
@r
= (
q$Revision: 2.2 $
=~ /\d+/g );
sprintf
"%d."
.
"%02d"
x
$#r
,
@r
};
__PACKAGE__->Define(
'iso-2022-kr'
);
sub
needs_lines { 1 }
sub
perlio_ok {
return
0;
}
sub
decode {
my
(
$obj
,
$str
,
$chk
) =
@_
;
my
$res
=
$str
;
my
$residue
= iso_euc( \
$res
);
$_
[1] =
$residue
if
$chk
;
return
Encode::decode(
'euc-kr'
,
$res
, FB_PERLQQ );
}
sub
encode {
my
(
$obj
,
$utf8
,
$chk
) =
@_
;
$_
[1] =
''
if
$chk
;
my
$octet
= Encode::encode(
'euc-kr'
,
$utf8
, FB_PERLQQ );
euc_iso( \
$octet
);
return
$octet
;
}
sub
iso_euc {
my
$r_str
=
shift
;
$$r_str
=~ s/
$RE
{
'2022_KR'
}//gox;
$$r_str
=~ s{
\x0e
([^\x0f]*)
\x0f
}
{
my
$out
= $1;
$out
=~
tr
/\x21-\x7e/\xa1-\xfe/;
$out
;
}geox;
my
(
$residue
) = (
$$r_str
=~ s/(\e.*)$//so );
return
$residue
;
}
sub
euc_iso {
no
warnings
qw(uninitialized)
;
my
$r_str
=
shift
;
substr
(
$$r_str
, 0, 0 ) =
$ESC
{
'2022_KR'
};
$$r_str
=~
s{
(
$RE
{EUC_C}+)
}{
my
$str
= $1;
$str
=~
tr
/\xA1-\xFE/\x21-\x7E/;
"\x0e"
.
$str
.
"\x0f"
;
}geox;
$$r_str
;
}
1;