используйте локаль - вопрос - PullRequest
2 голосов
/ 15 марта 2011

Когда я устанавливаю locale на it_IT.UTF-8 (экспорт LC_ALL = 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 .

почему мои настройки локали влияют на вывод strftimeбез использования locale прагмы?

1 Ответ

5 голосов
/ 15 марта 2011

POSIX::strftime - это тонкая оболочка для реального вызова функции strftime C в time.h, которая использует текущую локаль. Perl не прилагает усилий, чтобы привести его в соответствие.

DateTime имеет эквивалент strftime , реализованный в Perl, который будет соответствовать прагме языка Perl.

...