使用与 perl 脚本的 strftime 语言环境不同的语言



我的操作系统是波兰语。我需要通过perl脚本打印英文月份名称。

现场:

LANG=pl_PL.UTF8
LANGUAGE=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=pl_PL.UTF-8
LC_TIME="pl_PL.UTF8"
LC_COLLATE="pl_PL.UTF8"
LC_MONETARY=pl_PL.UTF-8
LC_MESSAGES="pl_PL.UTF8"
LC_PAPER=pl_PL.UTF-8
LC_NAME=pl_PL.UTF-8
LC_ADDRESS=pl_PL.UTF-8
LC_TELEPHONE=pl_PL.UTF-8
LC_MEASUREMENT=pl_PL.UTF-8
LC_IDENTIFICATION=pl_PL.UTF-8
LC_ALL=

脚本:

#!/usr/bin/perl -w
use strict;
use POSIX;
print strftime "%b %d, %Y", gmtime(time());

输出:kwi 11, 2018预期:Mar 11, 2018

有没有比s/kwi/Mar/更聪明的解决方案?

POSIX::setlocale 是你需要的

#!/usr/bin/perl -w
use strict;
use POSIX qw(setlocale strftime);
print strftime "%a %b %d, %Y", gmtime(time());
setlocale(POSIX::LC_ALL,'en_US.utf8');
print strftime "%a %b %d, %Y", gmtime(time());
setlocale(&POSIX::LC_ALL,'de_DE.utf8');
print strftime "%a %b %d, %Y", gmtime(time());

perldoc POSIX应该提供额外的信息。另请参阅有关设置和重置区域设置的信息。

最新更新