如何获得Perl的String::Multibyte支持的字符集

如何获得Perl的String::Multibyte支持的字符集,string,perl,String,Perl,我正在使用该模块,似乎String::Multibyte->new接受一个字符集作为第一个参数,如果不支持该字符集,则抛出一个异常。我认为支持的字符集是由特定目录中的*.pm文件定义的 获取受支持的字符集最可靠的方法是什么?获取文件是唯一的方法吗?我不确定我是否理解此模块的价值,源代码中有一些值得怀疑的地方,但除此之外,您似乎必须使用与模块本身类似的方法: use File::Basename qw( basename ); use File::Spec::Functions qw( catdi

我正在使用该模块,似乎String::Multibyte->new接受一个字符集作为第一个参数,如果不支持该字符集,则抛出一个异常。我认为支持的字符集是由特定目录中的*.pm文件定义的


获取受支持的字符集最可靠的方法是什么?获取文件是唯一的方法吗?

我不确定我是否理解此模块的价值,源代码中有一些值得怀疑的地方,但除此之外,您似乎必须使用与模块本身类似的方法:

use File::Basename qw( basename );
use File::Spec::Functions qw( catdir );
require String::Multibyte;

my $dir = catdir(basename($INC{'String/Multibyte.pm'}), 'Multibyte');
opendir my $dh, $dir or die "Cannot open charset dir '$dir': $!";
my @charsets = grep s/[.]pm\z//, readdir $dh;
close $dh; 
代码未经测试