区域设置在 FreeBSD 上的 Perl 中不起作用

Locale does not work in Perl on FreeBSD

对于 Debian Linux (Bash) 上的 perl5(修订版 5 版本 22 颠覆 2),以下内容确实有效(以俄语输出一条关于我试图打开一个不存在的目录的消息):

LANGUAGE=ru_RU.UTF-8 perl -Mstrict -Mwarnings -Mlocale -e 'opendir my $fh, "afdsfd"; print $!, "\n"'

但是在 FreeBSD perl5(修订版 5 版本 20 颠覆版本 3)上,它以英文打印消息。为什么它不能在 FreeBSD 上运行?


在 FreeBSD 上:

$ locale -a | grep ru
ru_RU.CP1251
ru_RU.CP866
ru_RU.ISO8859-5
ru_RU.KOI8-R
ru_RU.UTF-8

我发现 FreeBSD 10.3-RELEASE 上的俄语消息适用于 KOI8-R,但不适用于 UTF-8。

示例:

perl -Mstrict -Mwarnings -MPOSIX -e 'setlocale(POSIX::LC_ALL, "ru_RU.KOI8-R"); opendir my $fh, "afdsfd"; print $!, "\n"' | iconv -f KOI8-R -t UTF-8