2

(export LC_ALL = it_IT.UTF-8)に設定localeして、このスクリプトを実行するとit_IT.UTF-8

#!/usr/bin/env perl
use warnings;
use 5.012;
use POSIX qw(strftime);

say strftime "%A %B %e %H:%M:%S %Y", localtime;

私はこの出力を取得します:

martedì marzo 15 08:50:07 2011

しかし、これを読んでください(The-use-locale-pragmaから):

By default, Perl ignores the current locale. The use locale pragma tells Perl to use the current locale for some operations: ... The POSIX date formatting function (strftime()) uses LC_TIME .

localeプラグマを使用せずにロケール設定がstrftime-outputに影響を与えるのはなぜですか?

4

1 に答える 1

5

POSIX::strftimeは、現在のロケールを使用する実際のstrftimeC関数呼び出しの薄いラッパーです。time.hPerlはそれを適合させるための努力をしていません。

DateTimeには、 Perlのロケールプラグマに準拠する同等のstrftimeがPerlに実装されています。

于 2011-03-15T10:08:26.707 に答える