package Encode;
use strict;
-our $VERSION = do { my @r = (q$Revision: 1.26 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
+our $VERSION = do { my @r = (q$Revision: 1.30 $ =~ /\d+/g); sprintf "%d."."%02d" x $#r, @r };
our $DEBUG = 0;
require DynaLoader;
);
for my $k (2..11,13..16){
- $ExtModule{"iso-8859-$k"} = 'Encode/Byte.pm';
+ $ExtModule{"iso-8859-$k"} = 'Encode::Byte';
}
for my $k (@codepages){
- $ExtModule{"cp$k"} = 'Encode/Byte.pm';
+ $ExtModule{"cp$k"} = 'Encode::Byte';
}
for my $k (@macintosh)
{
- $ExtModule{"mac$k"} = 'Encode/Byte.pm';
+ $ExtModule{"mac$k"} = 'Encode::Byte';
+}
+
+for my $k (qw(UCS-2BE UCS-2LE UTF-16 UTF-16BE UTF-16LE
+ UTF-32 UTF-32BE UTF-32LE)){
+ $ExtModule{$k} = 'Encode::Unicode';
}
%ExtModule =
(%ExtModule,
- 'koi8-r' => 'Encode/Byte.pm',
- 'posix-bc' => 'Encode/EBCDIC.pm',
- cp037 => 'Encode/EBCDIC.pm',
- cp1026 => 'Encode/EBCDIC.pm',
- cp1047 => 'Encode/EBCDIC.pm',
- cp500 => 'Encode/EBCDIC.pm',
- cp875 => 'Encode/EBCDIC.pm',
- dingbats => 'Encode/Symbol.pm',
- macDingbats => 'Encode/Symbol.pm',
- macSymbol => 'Encode/Symbol.pm',
- symbol => 'Encode/Symbol.pm',
- viscii => 'Encode/Byte.pm',
+ 'koi8-r' => 'Encode::Byte',
+ 'posix-bc' => 'Encode::EBCDIC',
+ cp37 => 'Encode::EBCDIC',
+ cp1026 => 'Encode::EBCDIC',
+ cp1047 => 'Encode::EBCDIC',
+ cp500 => 'Encode::EBCDIC',
+ cp875 => 'Encode::EBCDIC',
+ dingbats => 'Encode::Symbol',
+ macDingbats => 'Encode::Symbol',
+ macSymbol => 'Encode::Symbol',
+ symbol => 'Encode::Symbol',
+ viscii => 'Encode::Byte',
);
unless ($ON_EBCDIC) { # CJK added to autoload unless EBCDIC env
%ExtModule =
(%ExtModule,
- 'cp936' => 'Encode/CN.pm',
- 'euc-cn' => 'Encode/CN.pm',
- 'gb12345-raw' => 'Encode/CN.pm',
- 'gb2312-raw' => 'Encode/CN.pm',
- 'gbk' => 'Encode/CN.pm',
- 'iso-ir-165' => 'Encode/CN.pm',
-
- '7bit-jis' => 'Encode/JP.pm',
- 'cp932' => 'Encode/JP.pm',
- 'euc-jp' => 'Encode/JP.pm',
- 'iso-2022-jp' => 'Encode/JP.pm',
- 'iso-2022-jp-1' => 'Encode/JP.pm',
- 'jis0201-raw' => 'Encode/JP.pm',
- 'jis0208-raw' => 'Encode/JP.pm',
- 'jis0212-raw' => 'Encode/JP.pm',
- 'macJapanese' => 'Encode/JP.pm',
- 'shiftjis' => 'Encode/JP.pm',
-
- 'cp949' => 'Encode/KR.pm',
- 'euc-kr' => 'Encode/KR.pm',
- 'ksc5601' => 'Encode/KR.pm',
- 'macKorean' => 'Encode/KR.pm',
-
- 'big5' => 'Encode/TW.pm',
- 'big5-hkscs' => 'Encode/TW.pm',
- 'cp950' => 'Encode/TW.pm',
-
- 'big5plus' => 'Encode/HanExtra.pm',
- 'euc-tw' => 'Encode/HanExtra.pm',
- 'gb18030' => 'Encode/HanExtra.pm',
+ 'cp936' => 'Encode::CN',
+ 'euc-cn' => 'Encode::CN',
+ 'gb12345-raw' => 'Encode::CN',
+ 'gb2312-raw' => 'Encode::CN',
+ 'gbk' => 'Encode::CN',
+ 'iso-ir-165' => 'Encode::CN',
+
+ '7bit-jis' => 'Encode::JP',
+ 'cp932' => 'Encode::JP',
+ 'euc-jp' => 'Encode::JP',
+ 'iso-2022-jp' => 'Encode::JP',
+ 'iso-2022-jp-1' => 'Encode::JP',
+ 'jis0201-raw' => 'Encode::JP',
+ 'jis0208-raw' => 'Encode::JP',
+ 'jis0212-raw' => 'Encode::JP',
+ 'macJapanese' => 'Encode::JP',
+ 'shiftjis' => 'Encode::JP',
+
+ 'cp949' => 'Encode::KR',
+ 'euc-kr' => 'Encode::KR',
+ 'ksc5601' => 'Encode::KR',
+ 'macKorean' => 'Encode::KR',
+
+ 'big5' => 'Encode::TW',
+ 'big5-hkscs' => 'Encode::TW',
+ 'cp950' => 'Encode::TW',
+
+ 'big5plus' => 'Encode::HanExtra',
+ 'euc-tw' => 'Encode::HanExtra',
+ 'gb18030' => 'Encode::HanExtra',
);
}
{
my $class = shift;
my @modules = (@_ and $_[0] eq ":all") ? values %ExtModule : @_;
- for my $m (@modules)
- {
- $DEBUG and warn "about to require $m;";
- eval { require $m; };
+ for my $mod (@modules){
+ $mod =~ s,::,/,g or $mod = "Encode/$mod";
+ $mod .= '.pm';
+ $DEBUG and warn "about to require $mod;";
+ eval { require $mod; };
}
+ my %modules = map {$_ => 1} @modules;
return
- map({$_->[0]}
- sort({$a->[1] cmp $b->[1]}
- map({[$_, lc $_]}
- grep({ $_ ne 'Internal' } keys %Encoding))));
+ sort grep {!/^(?:Internal|Unicode)$/o} keys %Encoding;
}
sub define_encoding
$oc = $class->find_alias($lc) if $lc ne $name;
return $oc if defined $oc;
- if (!$skip_external and exists $ExtModule{$lc})
+ unless ($skip_external)
{
- eval{ require $ExtModule{$lc}; };
- return $Encoding{$name} if exists $Encoding{$name};
+ if (my $mod = $ExtModule{$name} || $ExtModule{$lc}){
+ $mod =~ s,::,/,g ; $mod .= '.pm';
+ eval{ require $mod; };
+ return $Encoding{$name} if exists $Encoding{$name};
+ }
}
-
return;
}
sub encode_utf8
{
my ($str) = @_;
- utf8::encode($str);
+ utf8::encode($str);
return $str;
}
$_[1] = '' if $chk;
return $res;
};
- $Encode::Encoding{Unicode} =
- bless {Name => "UTF_EBCDIC"}, "Encode::UTF_EBCDIC";
+ $Encode::Encoding{Internal} =
+ bless {Name => "UTF_EBCDIC"} => "Encode::UTF_EBCDIC";
} else {
# was in Encode::UTF_EBCDIC
package Encode::Internal;
};
*encode = \&decode;
$Encode::Encoding{Unicode} =
- bless {Name => "Internal"}, "Encode::Internal";
+ bless {Name => "Internal"} => "Encode::Internal";
}
{
return $octets;
};
$Encode::Encoding{utf8} =
- bless {Name => "utf8"}, "Encode::utf8";
+ bless {Name => "utf8"} => "Encode::utf8";
}
# do externals if necessary
require File::Basename;
require File::Spec;
- for my $ext (qw(Unicode)){
+ for my $ext (qw()){
my $pm =
File::Spec->catfile(File::Basename::dirname($INC{'Encode.pm'}),
"Encode", "$ext.pm");
Or you can give the name of specific module.
- @with_jp = Encode->encodings("Encode/JP.pm");
+ @with_jp = Encode->encodings("Encode::JP");
+
+When "::" is not in the name, "Encode::" is assumed.
-Note in this case you have to say C<"Encode/JP.pm"> instead of
-C<"Encode::JP">.
+ @ebcdic = Encode->encodings("EBCDIC");
To find which encodings are supported by this package in details,
see L<Encode::Supported>.