如何修复Perl的区域设置警告?

当我运行perl,我得到警告:
perl: warning: Setting locale Failed.
perl: warning: Please check that your locale settings:
    LANGUAGE = (unset),LC_ALL = (unset),LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

如何解决它?

解决方法

您的操作系统不知道en_US.UTF-8。

你没有提到一个特定的平台,但我可以重现你的问题:

% uname -a
OSF1 hunter2 V5.1 2650 alpha
% perl -e exit
perl: warning: Setting locale Failed.
perl: warning: Please check that your locale settings:
    LC_ALL = (unset),LANG = "en_US.UTF-8"
    are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").

我的猜测是你使用ssh从较新的台式机连接到这个较旧的主机。 / etc / ssh / sshd_config通常包含

AcceptEnv LANG LC_*

这允许客户端将这些环境变量的值传播到新会话中。

如果您不需要完整的语言环境,警告会提示您如何压制它:

% env LANG=C perl -e exit
%

或使用bash:

$ LANG=C perl -e exit
$ 

要永久解决问题,请选择其中一个

>在较旧的主机上,在shell的初始化文件中设置LANG环境变量。
>在客户端修改您的环境,例如,而不是ssh hunter2,使用命令LANG = C ssh hunter2。
>如果您有管理员权限,请通过注释掉本地/ etc / ssh / ssh_config文件中的SendEnv LANG LC_ *行,停止发送环境变量。 (感谢this answer.有关OpenSSH的更多信息,请参阅Bug 1285)

相关文章

忍不住在 PerlChina 邮件列表中盘点了一下 Perl 里的 Web 应用框架(巧的是 PerlBuzz 最近也有一篇相关...
bless有两个参数:对象的引用、类的名称。 类的名称是一个字符串,代表了类的类型信息,这是理解bless的...
gb2312转Utf的方法: use Encode; my $str = "中文"; $str_cnsoftware = encode("utf-8...
  perl 计算硬盘利用率, 以%来查看硬盘资源是否存在IO消耗cpu资源情况; 部份代码参考了iostat源码;...
1 简单变量 Perl 的 Hello World 是怎么写的呢?请看下面的程序: #!/usr/bin/perl print "Hello W...
本文介绍Perl的Perl的简单语法,包括基本输入输出、分支循环控制结构、函数、常用系统调用和文件操作,...